эмуляция od для каталогов

эмуляция od для каталогов

Мне было интересно, почему od(1) работал в UNIX, но не работает в GNU/Linux. Есть хороший ответ наошибка сервера. Следующий вопрос: знаете ли вы какие-либо инструменты, которые могут эмулировать поведение od для поддержки дампа данных каталога в GNU/Linux?

решение1

Linux не позволяет делать plain read(dir_name, buffer, sizeof(buffer)- он всегда возвращает -1 и помещает EISDIR в errno. Это, вероятно, рационально, так как не все файловые системы имеют каталоги как файлы. Например, часто используемая reiserfs этого не делает.

Вы можете использовать open()системный вызов из программы на C, чтобы получить файловый дескриптор каталога, но такие вещи, как readdir(3)(из libc) вызов, getdents(2)чтобы фактически получить записи каталога. Вероятно, в каждой реализации файловой системы есть код для создания struct linux_direntчего-либо (файла, базы данных, B-дерева на диске), что файловая система использует для хранения записей каталога.

Связанный контент