Função LSTAT em C

Função LSTAT em C
“A função lstat () é basicamente um tipo de chamada de sistema relacionada ao nosso sistema operacional. Para saber os detalhes sobre a função lstat (), primeiro, precisamos saber o que é o sistema chama.

As chamadas do sistema dão um ambiente ao modo de serviço disponível no sistema operacional. Nosso programa pode executar em dois modos. Um deles é o modo de usuário e outro é o modo de kernel. Se um programa for executado no modo kernel, o programa terá o direito de acessar a memória, hardware e outros recursos diretamente.

As chamadas do sistema são os componentes do sistema operacional que têm o direito de usar todos os arquivos do sistema.”

O que é a função lStat ()?

A função lstat () controlará todo o status do sistema e retornará as informações sobre um link especial chamado link simbólico. A função stat () & fstat () fornece as informações sobre o arquivo específico, mas a função lstat () refere -se a um link que aponta o arquivo específico.

Sintaxe

A sintaxe da função lStat () é -
int lstat (const char *caminho, struct stat *buf);

Aqui dentro da função lstat (), passaremos dois parâmetros como um argumento.

O primeiro parâmetro da função é um caminho que fornece informações sobre sua identificação e a fonte provável ou real do arquivo.

Outro parâmetro é o Buff, que fornece informações sobre o endereço para a estrutura estatística. Esta estrutura estatística contém todas as informações atualizadas sobre o arquivo específico, que é apontado pelo ponteiro *buf.

A estrutura da função lstat ()

O sistema chamado Função LSTAT () retorna uma estrutura chamada estrutura estatística. Os membros de dados dessa estrutura estatística são:

  1. ST_MODE: as permissões de arquivo e informações do tipo de arquivo.
  2. st_ino: informações sobre o inode.
  3. st_dev: o nome do dispositivo.
  4. st_uid: obtendo a identificação do arquivo de origem.
  5. st_gid: obtendo o grupo de identificação do arquivo de origem
  6. st_size: o tamanho do arquivo.
  7. st_atime: mencionando a última vez do arquivo usado.
  8. ST_CTIME: mencionando o tempo de alterar os metadados do arquivo. Exemplo: alteração do nome do arquivo.
  9. st_mtime: mencionando o tempo para alterar o conteúdo do arquivo.
  10. st_nlink: mencionando o número da entrada do diretório.
  11. ST_BLOCKS: Contando o número de blocos usados ​​(512 bytes).

Macros

A função lstat () tem uma forte estrutura, que contém vários tipos de macros. Essas macros ajudam a função lstat () a reconhecer o tipo de arquivos. O nome dessas macros é:

  1. S_isblk (): teste para um arquivo especial em bloco.
  2. S_ischr (): examine se o arquivo é um arquivo de dispositivo de caractere.
  3. S_isdir (): o tipo de arquivo é um diretório.
  4. S_isfifo (): inspeção relacionada ao tubo no sistema.
  5. S_isreg (): examine o arquivo comumente usado.
  6. S_islink (): examine o link suave.
  7. S_ISSOCK (): Examine se o arquivo é um soquete.

Agora veremos um exemplo de programação para demonstrar a função de chamada do sistema lstat ().

Exemplo de programação 1

#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
int main ()

char fl [] = "t.C ", sln [] =" t.link" ;
STRUT STAT INC;
int fd;
if ((fd = creat (fl, s_iwusr))<0)
perror ("creat () erro");
outro

fechar (FD);
if (link (fl, sln)!= 0)
perror ("link () erro");
outro

if (lstat (sln, & inf)!= 0)
perror ("lstat () error");
outro

puts ("Estamos obtendo informações abaixo do lstat () para um arquivo:");
printf ("Links de arquivo:%d \ n", (int) infravermelho.st_nlink);
printf ("arquivo uid:%d \ n", (int) inf.st_uid);
printf ("Arquivo inode:%d \ n", (int) INF.st_ino);
printf ("Arquivo GID:%d \ n", (int) INF.st_gid);
printf ("Arquivo dev id:%d \ n", (int) inf.st_dev);
printf ("Modo de arquivo:%08x \ n", infra.st_mode);

desvincular (SLN);

desvincular (fl);

retornar 0;

Saída

Explicação

Aqui, veremos alguma saída usando a função lstat () sobre o status de um arquivo específico criado pelo programador. Neste programa, criamos um arquivo regular e também criamos seu link simbólico. Ele mostrará as informações sobre I-Node, dev ID, modo, nenhum dos links, UID e GID. A função lstat () fornece todas as informações detalhadas de um arquivo criado e seu link soft correspondente.

Exemplo de programação 2

Vamos ver outra implementação detalhada da função lstat ().

#incluir
#incluir
#incluir
#incluir
#incluir
int main (int argc, char *argv [])

estrutura stat a;
if (argc != 2)
fprintf (stderr, "Por favor, insira o nome do arquivo como 1º argumento: %s \ n", argv [0]);
saída (exit_failure);

if (lStat (argv [1], & a) == -1)
perror ("algum erro para lstat");
saída (exit_failure);

printf ("Então, o tipo de arquivo de entrada é =>");
se um.st_mode & s_ifmt) == s_ifdir)
printf ("diretório \ n");
caso contrário, se ((a.st_mode & s_ifmt) == s_ififo)
printf ("FIFO/PIPE \ n");
caso contrário, se ((a.st_mode & s_ifmt) == s_ifchr)
printf ("Dispositivo de caracteres \ n");
caso contrário, se ((a.st_mode & s_ifmt) == s_ifblk)
printf ("dispositivo de bloco \ n");
caso contrário, se ((a.st_mode & s_ifmt) == s_ifreg)
printf ("regular \ n");
caso contrário, se ((a.st_mode & s_ifmt) == s_ifsock)
printf ("soquete \ n");
caso contrário, se ((a.st_mode & s_ifmt) == s_iflnk)
printf ("Link simbólico \ n");
outro
printf ("desconhecido \ n");
printf ("Não. da lista de links:%ld \ n ", (longo) a.st_nlink);
printf ("Propriedade: uid =%ld gid =%ld \ n",
(longo) um.st_uid, (longo) um.st_gid);
printf ("inode no %ld \ n", (longo) um.st_ino);
printf ("Modo: %lo (octal) \ n",
(não assinado por muito) um.st_mode);
printf ("O último tempo de mudança é:%s", ctime (& a.st_ctime));
printf ("O último tempo de acesso é: %s", ctime (& a.st_atime));
printf ("Alterar o conteúdo da última.st_mtime));
printf ("Comprimento preferido dos blocos de dar E/S: %ld bytes \ n",
(longo) um.st_blksize);
printf ("O comprimento do arquivo é: %lld bytes \ n",
(Longo) um.st_size);
printf ("Contando o não. de blocos usados ​​%lld \ n ",
(Longo) um.st_blocks);
saída (exit_success);

Saída

Explicação

Aqui mostraremos todas as perspectivas da função de chamada do sistema lstat ().

Na primeira saída, entraremos em um nome de arquivo sem as informações do caminho. Como saída, obteremos o uso do programa. O programa precisa de um nome/caminho do arquivo de entrada como 1º argumento.

Na próxima saída, mostraremos as informações sobre o arquivo de dispositivo Block. Aqui 5+0 registros em e 5+0 registros, e o tipo de arquivo de entrada é um dispositivo de bloco.

Na próxima saída, criaremos um arquivo chamado “Papan_Char_Device_File”Qual tipo é um dispositivo de caractere. A função lstat () ajudará a fornecer todas as informações relacionadas a este dispositivo de caracteres.

Depois disso, faremos um diretório chamado “Habibpur”Qual tipo de arquivo é um diretório. lstat () criará todas as informações sobre este arquivo.

Em seguida, criaremos outro arquivo chamado “Papan_fifo_file”Cujo tipo de arquivo é FIFO/tubo. Obteremos a função LSTAT fornecida informações para o arquivo como saída.

Depois disso, faremos um link simbólico chamado “puja.TXT"De um arquivo chamado"Avishek.TXT”E obtenha a função LSTAT forneceu informações para o arquivo como saída.

Em seguida, verificaremos o tipo de arquivo de “Avishek.TXT,”Que é um arquivo regular [já criado na etapa anterior].

E por último, criaremos outro arquivo chamado ” nadia_socket_file.meia”, Qual tipo de arquivo é um soquete e obtenha todas as informações detalhadas sobre este arquivo.

Com a ajuda da função lstat (), reconheceremos todos os arquivos.

Conclusão

Aqui teremos mencionado todos os aspectos da chamada do sistema de função lSTAT (). Vendo todas as características e o tipo de implementação da função LSTAT (), podemos entender claramente que é uma função de chamada do sistema muito importante para obter todos os atributos de um arquivo específico que criamos em nosso sistema, e o sistema responderá de acordo com para a instrução do comando lstat () função.