emulación od para directorios

emulación od para directorios

Me preguntaba por qué od(1) solía funcionar en UNIX pero no en GNU/Linux. Hay una buena respuesta enfallo del servidor. La siguiente pregunta es: ¿conoce alguna herramienta que pueda emular el comportamiento od para admitir el volcado de datos de directorio en GNU/Linux?

Respuesta1

Linux no te permite hacer nada simple read(dir_name, buffer, sizeof(buffer): siempre devuelve -1 y coloca EISDIR en errno. Probablemente esto sea racional, ya que no todos los sistemas de archivos tienen directorios como archivos. Por ejemplo, el reiserfs de uso común no lo hace.

Puede usar la open()llamada al sistema desde un programa C para obtener un descriptor de archivo de un directorio, pero cosas como readdir(3)llamadas (de libc) getdents(2)realmente recuperan entradas del directorio. Probablemente haya código en cada implementación del sistema de archivos para crear struct linux_direnta partir de cualquier cosa (un archivo, una base de datos, un árbol B en el disco) que el sistema de archivos utilice para almacenar entradas de directorio.

información relacionada