As chamadas do sistema fornecidas pelo kernel Linux estão expostas na linguagem de programação C via glibc. Quando uma chamada do sistema é usada, você está se comunicando com o sistema operacional e, no retorno, o sistema operacional se comunica através dos parâmetros que são devolvidos às funções de chamada do sistema (valores de retorno).
Chamada do sistema de estatísticas:
A chamada do sistema de estatísticas é uma chamada do sistema no Linux para verificar o status de um arquivo como verificar quando o arquivo foi acessado. A chamada do sistema stat () realmente retorna atributos de arquivo. Os atributos do arquivo de um inode são basicamente retornados pela função STAT (). Um inode contém os metadados do arquivo. Um inode contém: o tipo do arquivo, o tamanho do arquivo, quando o arquivo foi acessado (modificado, excluído) que é carimbos de tempo e o caminho do arquivo, o ID do usuário e o ID do grupo, os links do arquivo e endereço físico do conteúdo do arquivo.
Podemos dizer que o inode contém todos os dados necessários para a chamada do sistema stat () e é o número do índice para o arquivo que é salvo na tabela inode. Sempre que você cria um arquivo um número de inode para esse arquivo é criado. Usando o sistema estatal chamado As tabelas do sistema podem ser visualizadas.
Sintaxe da chamada do sistema estatal C:
Para usar a chamada do sistema STAT na linguagem de programação C, você deve incluir o seguinte arquivo de cabeçalho:
#incluirStat é usado para obter o status de um arquivo. A sintaxe da chamada do sistema estatal C pode não ser a mesma para cada sistema operacional. No Linux, a sintaxe da chamada do sistema estatal é a seguinte:
int stat (const char *caminho, struct stat *buf)O tipo de retorno da função no int, se a função for executada com sucesso, 0 será retornado se houver algum erro, -1 será retornado.
Aqui Const Char *caminho Especifica o nome do arquivo. Se o caminho do arquivo for um link simbólico, você precisará especificar o link em vez do nome do arquivo.
Então, na função, temos uma estrutura estatística na qual os dados ou informações sobre o arquivo são armazenados que usam um ponteiro nomeado BUF, que é passado como um paramter e preenchido durante a execução da chamada e legível pelo usuário após a chamada.
Estrutura de estatísticas:
A estrutura estatística definida no arquivo de cabeçalho contém os seguintes campos:
STRUT STATDescrição:
Bandeiras | Descrição | Valor da bandeira |
---|---|---|
S_ifmt | Uma máscara de bits usada para obter o valor do modo de um arquivo | 0170000 |
S_ifsock | Uma constante de arquivo do soquete | 0140000 |
S_iflink | Uma constante de arquivo de link simbólico | 0120000 |
S_ifreg | Arquivo constante para arquivo regular | 0100000 |
S_ifblk | Arquivo constante para arquivo de bloco | 0060000 |
S_ifdir | Arquivo constante para arquivo de diretório | 0040000 |
S_ifchr | Arquivo constante para o arquivo de caracteres | 0020000 |
S_ififo | Uma constante de arquivo de FIFO | 0010000 |
S_isuid | Definir bit de identificação de usuário | 0004000 |
S_isgid | Bit de identificação do grupo definido | 0002000 |
S_isvtx | Bit pegajoso que indica texto compartilhado | 0001000 |
S_irwxu | Permissões do proprietário (leia, escreva, execute) | 00700 |
S_irusr | Leia permissões para o proprietário | 00400 |
S_IWUSR | Escreva permissões para o proprietário | 00200 |
S_IXUSR | Executar permissões para o proprietário | 00100 |
S_irwxg | Permissões de grupo (leia, escreva, execute) | 00070 |
S_irgrp | Leia permissões para o grupo | 00040 |
S_IWGRP | Escreva permissões para o grupo | 00020 |
S_IXGRP | Executar permissões para grupo | 00010 |
S_irwxo | Permissões para outros (leia, escreva, execute) | 00007 |
S_iroth | Leia permissões para outros | 00004 |
S_iwoth | Escreva permissões para outros | 00002 |
S_IXOTH | Executar permissões para outros | 00001 |
Como usar o STAT System Call:
O exemplo a seguir mostra como usar o STAT System Call na linguagem de programação C no Linux, Ubuntu.
EXEMPLO 1:
No código a seguir, encontraremos o modo de um arquivo:
CÓDIGO:
#incluirCompilar e executar o programa retorna como abaixo:
Neste código, passamos o nome do arquivo na chamada do sistema estatal e depois o ponteiro para Stat Struct, que é sfile. O ponteiro da Stat Struct é então usado para acessar St_mode, que exibe o modo do arquivo usando a instrução PRIMF.
O arquivo de cabeçalho é usado para que você possa usar o STAT System Chamada. O arquivo de cabeçalho é o arquivo de biblioteca de entrada/saída padrão para que você possa usar o printf ou scanf no seu código C.
Exemplo 2:
No código a seguir, obteremos informações sobre o arquivo usando o STAT System Chamada:
CÓDIGO:
#incluirSAÍDA:
No código C acima, inserimos o nome do arquivo e, se o arquivo não existir, a execução do programa será interrompida. Isso é demonstrado na seguinte imagem:
Se existir nosso arquivo, o Sfile (n) da função (n) será chamado no qual passamos o nome do arquivo. Dentro da função, antes de tudo, usamos o STAT System Call, se o stat () retornar -1, deve -se qualquer erro, para que uma mensagem seja impressa e a execução do programa será interrompida.
Então, na instrução printf, usamos o nome da função e o separador de pontos para acessar os membros de dados de Stat Struct.
Então, para o modo de arquivo, acessamos as macros ou bandeiras de st_mode. Aqui lógico e operador é usado para imprimir os respectivos modos. Verificamos as permissões para usuário, grupo e outros para o arquivo especificado (nome do arquivo inserido pelo usuário).
Com isso, você pode ver como usar a chamada do sistema estatal da linguagem de programação C para obter informações do kernel do sistema operacional sobre os arquivos. Se você tiver alguma dúvida, sinta -se livre, conte -nos por seção de comentários.