o que é a entrada de diretório?

5

Eu tenho que usar o dirent.h em alguns dos meus projetos em C. De acordo com várias descrições diferentes encontradas on-line, cheguei a uma vaga ideia de que entrada de diretório é uma estrutura de dados, que nos diz tudo sobre um arquivo. Por favor, esclareça a ideia do que exatamente é uma entrada de diretório?

    
por Mohit 26.02.2015 / 13:27

2 respostas

5

Nem tudo sobre o arquivo, a maioria dos metadados sobre o arquivo é armazenada no arquivo inode, não na entrada de diretório. A entrada de diretório é apenas uma estrutura de inode e filename - apenas informações suficientes para converter um nome de arquivo em um inode e chegar ao arquivo real.

Você pode imaginar com segurança um diretório como um dicionário:

filename1 :> inode1
filename2 :> inode2
....

Depois, basta seguir o número do inode (basicamente o endereço exclusivo de um inode - um tipo de ponteiro) e localizar todas as permissões, dados de propriedade, datas, atributos estendidos e, claro, o conteúdo do arquivo (se for um arquivo). É claro que a entrada de diretório também pode ser outro diretório, link simbólico, nó de dispositivo ou qualquer coisa assim. Você tem que ir lá para descobrir isso.

    
por 26.02.2015 / 13:44
0

A entrada de diretório é basicamente o mapeamento do nome do arquivo para seu inode. O usuário geralmente acessa o arquivo pelo seu nome, entretanto tais nomes de arquivos não são compreendidos pelo kernel.

O kernel identifica um arquivo usando o inode, que é exclusivo para um arquivo.
Este inode contém basicamente todos os dados do arquivo, exceto seu nome e os dados reais no arquivo. Esse mapeamento do nome do arquivo para seu inode é mantido na estrutura de dados chamada entrada de diretório.

Lembre-se de que muitas entradas (no mesmo diretório ou em diretórios diferentes) podem identificar o mesmo arquivo (o mesmo inode). Então, dado um nome, você pode obter seu inode facilmente; dado um inode, encontrar os nomes é muito mais difícil (e o utilitário find é a ferramenta para isso).

    
por 08.09.2015 / 17:16