od(1) が UNIX では動作していたが、GNU/Linux では動作しなかった理由が気になります。良い答えがありますサーバー障害。次の質問は、GNU / Linuxでディレクトリデータダンプをサポートするために奇妙な動作をエミュレートできるツールを知っていますか?
答え1
Linuxでは一般的な操作を実行できませんread(dir_name, buffer, sizeof(buffer)
。常に-1を返し、EISDIRをに入れますerrno
。すべてのファイルシステムがディレクトリをファイルとして扱うわけではないので、これは意味があるかもしれません。たとえば、一般的に使用されるreiserfsはそうではありません。
Cプログラムでは、システムコールを使用してディレクトリopen()
のファイル記述子を取得できますが、readdir(3)
(libcでは)呼び出しなどはgetdents(2)
実際にディレクトリエントリを検索できます。各ファイルシステムの実装には、ファイルstruct linux_dirent
システムがディレクトリエントリ(ファイル、データベース、ディスクのBツリー)を格納するために使用するすべてのものから生成するコードがあります。