4

man getdensts は、d_off で次の構造体 dirent へのオフセットが保持されると述べています。しかし、最後のダイレントのためにこのフィールドに何を保持する必要がありますか? このSVr4標準を見つけてそこを見ることができませんでしたが、男は何も言いません

4

2 に答える 2

4

「SVr4」はUnix System V Release 4を意味します。Solaris はそれに基づいており、Solaris は次のように述べています。

エントリには、それd_offを生成したファイルシステムによってのみ解釈可能な値が含まれています。lseek(2)ディレクトリ内の現在のエントリに続くエントリを見つけるためのオフセットとして指定できます。

Linux のマンページの例を見ると、を使用するプログラムが見つかりますgetdents。明らかに不確定な最終エントリの に依存するのではなくd_off、 からの戻り値に依存して、getdentsエントリの数を決定します。

ところで、Linux のマンページには、システム コールを使用すべきgetdentsではなく、GLibc でもサポートされていないことも明確に記載されています。代わりに POSIXreaddirインターフェイスを使用してください。

于 2013-05-23T16:51:11.067 に答える
0

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.

于 2013-05-23T14:48:03.943 に答える