emulação od para diretórios

emulação od para diretórios

Eu queria saber por que od(1) costumava funcionar no UNIX, mas não funciona no GNU/Linux. Há uma boa resposta emfalha no servidor. A próxima pergunta é: você conhece alguma ferramenta que possa emular o comportamento do od para suportar o despejo de dados de diretório no GNU/Linux?

Responder1

O Linux não permite que você faça isso read(dir_name, buffer, sizeof(buffer)- ele sempre retorna -1 e coloca EISDIR em errno. Isso provavelmente é racional, pois nem todos os sistemas de arquivos possuem diretórios como arquivos. Os reiserfs comumente usados, por exemplo, não.

Você pode usar a open()chamada do sistema de um programa C para obter um descritor de arquivo de um diretório, mas coisas como readdir(3)(da libc) chamam getdents(2)para realmente recuperar entradas de diretório. Provavelmente existe código em cada implementação do sistema de arquivos para criar struct linux_direnta partir de qualquer coisa (um arquivo, um banco de dados, uma árvore B no disco) que o sistema de arquivos usa para armazenar entradas de diretório.

informação relacionada