Cada tipo de sistema de arquivos armazena os diretórios de uma maneira diferente. Existem muitos tipos diferentes de sistemas de arquivos com características diferentes - bons para alta taxa de transferência, bons para alta simultaneidade, bons para ambientes de memória limitada, diferentes comprometimentos entre leitura e gravação, entre complexidade e estabilidade, etc. Seu livro descreve um sistema de arquivos usado no início Sistemas Unix. Sistemas modernos suportam muitos sistemas de arquivos diferentes.
As versões iniciais do Unix tinham muita manipulação do sistema de arquivos fora do kernel. Por exemplo, mkdir
e rmdir
funcionaram editando diretamente algumas estruturas de dados do sistema de arquivos. Isso foi rapidamente substituído por uma interface uniforme de acesso ao diretório, a opendir
/ readdir
/ a família closedir
, que permitia que os aplicativos manipulassem diretórios sem precisar saber como eles eram implementados sob o capô.
O motivo pelo qual você não pode ler o conteúdo do diretório no Linux não é porque eles precisam ser ocultados, mas porque os recursos existem apenas se forem implementados, e esse recurso é inútil e tem um custo. Dado que o formato depende do sistema de arquivos, é um recurso sem sentido: um programa não pode saber o formato do que está lendo. Não é um recurso completamente trivial para suportar: alguns sistemas de arquivos organizam diretórios de maneiras que não são apenas um fluxo de bytes, por exemplo, pode ser organizado como um B-tree . Algumas variantes do Unix ainda permitem que os aplicativos leiam o conteúdo do diretório diretamente, para compatibilidade com versões anteriores, mas o Linux não tem esse recurso (e nunca teve tanto quanto me lembro - já era um recurso obsoleto no início dos anos 90). >