Macbook / Linux Octal Dump em um diretório [closed]

4

Estou lendo "O ambiente de programação Unix". Sua discussão de diretórios faz uso freqüente do comando od para obter um dump octal do conteúdo de um diretório. Mas em alguns desde 1984, o uso de od em um diretório foi desativado no MacBook (retorna 'é um diretório'). Parece que também foi desativado para diretórios no linux.

Quaisquer comandos alternativos que eu possa usar?

    
por chernevik 03.10.2011 / 00:36

2 respostas

3

O kernel do OS X proíbe as operações de read(2) nos diretórios , portanto, você nunca poderá usar ferramentas de espaço do usuário para ler entradas de diretórios diretamente.

Se você quiser ler as entradas de diretório do espaço do usuário, você precisará abrir o dispositivo de bloco subjacente diretamente, ler seus superblocos, encontrar o inode raiz, ler as entradas para encontrar o próximo diretório na cadeia recursivamente para encontrar o diretório em que você está interessado, e então você pode ler as entradas do diretório. Você irá, em essência, escrever um driver do sistema de arquivos do espaço do usuário para fazer essa tarefa.

Havia muito que era inteligente com os antigos sistemas Unix, mas esta era definitivamente uma parte estranha - a única maneira de criar diretórios naqueles dias era via o comando mkdir(1) , que era setuid-root, porque a criação de diretórios tinha que ser feita através da chamada do sistema mknod(2) . Então, programas rotineiramente chamam system("mkdir /path/to/foo"); chdir("/path/to/foo"); para criar um novo diretório.

    
por 03.10.2011 / 01:36
0

De acordo com o link , essa é uma limitação do gnu od comando, e há um "problema" com ele na versão do FreeBSD também (que eu acho que é o que o Darwin é baseado em.)

Pode ser dependente do sistema de arquivos, do que o site diz. Ele também disse que isso funciona em diretórios quando usado no Solaris.

Basicamente, parece que as instruções dependem da versão do UNIX que você está usando. Nenhuma solução conhecida que eu possa encontrar para fazer isso funcionar em um diretório.

    
por 03.10.2011 / 00:47