man getdensts は、d_off で次の構造体 dirent へのオフセットが保持されると述べています。しかし、最後のダイレントのためにこのフィールドに何を保持する必要がありますか? このSVr4標準を見つけてそこを見ることができませんでしたが、男は何も言いません
2 に答える
「SVr4」はUnix System V Release 4を意味します。Solaris はそれに基づいており、Solaris は次のように述べています。
エントリには、それ
d_off
を生成したファイルシステムによってのみ解釈可能な値が含まれています。lseek(2)
ディレクトリ内の現在のエントリに続くエントリを見つけるためのオフセットとして指定できます。
Linux のマンページの例を見ると、を使用するプログラムが見つかりますgetdents
。明らかに不確定な最終エントリの に依存するのではなくd_off
、 からの戻り値に依存して、getdents
エントリの数を決定します。
ところで、Linux のマンページには、システム コールを使用すべきgetdents
ではなく、GLibc でもサポートされていないことも明確に記載されています。代わりに POSIXreaddir
インターフェイスを使用してください。
I'd say it's 0
, which could not indicate any next entry as the value implicitly needs to be larger 0
and also wouldn't be wrong as it points to a valid entry, namely the first one.