od emulação para diretórios

5

Eu estava me perguntando por que od (1) costumava trabalhar no UNIX, mas não funciona no GNU / Linux. Há uma boa resposta em serverfault . A próxima pergunta é, você está ciente de alguma ferramenta que pode emular o comportamento od para suportar o despejo de dados do diretório no GNU / Linux?

    
por sakisk 14.07.2012 / 18:02

1 resposta

6

O Linux não permite que você faça um read(dir_name, buffer, sizeof(buffer) - sempre retorna -1 e coloca o EISDIR em errno . Isso provavelmente é racional, já que nem todos os sistemas de arquivos têm diretórios como arquivos. O reiserfs comumente usado não, por exemplo.

Você pode usar a chamada de sistema open() de um programa em C para obter um descritor de arquivo de um diretório, mas coisas como readdir(3) (da libc) chamam getdents(2) para recuperar entradas de diretório. Provavelmente há código em cada implementação do sistema de arquivos para criar struct linux_dirent 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.

    
por 14.07.2012 / 18:24