3

これは簡単な質問だと思ったのですが、答えが見つかりません。私は主にこれらの仕様を読んでいます:

http://www.nongnu.org/ext2-doc/ext2.html

ディレクトリエントリの名前がヌルで終わるはずかどうかについては言及していないようです。未定義だと思います。name_len フィールドがあるので、とにかく名前を簡単に出力できます。

ext2 ディレクトリ名は null で終わることが保証されていますか?

趣味の OS で ext2 ドライバーをテストしているときに、いくつかのディレクトリ名を印刷したときに最後にゴミ文字が出てくることに気付いたので、質問します。単純に name_len 文字を出力すれば問題ありませんが、null で終了していれば問題ありません。

ありがとう!

4

1 に答える 1

7

私はこれが古い質問であることを知っていますが、これを見つけるかもしれない他の人のために:

いいえ、nullで終了することは保証されていません。実際、名前の長さ(name_len)が4の倍数でない場合にのみ、nullで終了する必要があります。

Linuxカーネルの理解、第3版から:

...ディレクトリエントリの長さは常に4の倍数であるため、必要に応じて、ファイル名の末尾にヌル文字(\ 0)が追加されます。name_lenフィールドには、実際のファイル名の長さが格納されます

以下の例で(本から)。長さ(4)は4の倍数であるため、名前「sbin」にはヌル終了がないことに注意してください。

ここに画像の説明を入力してください

于 2012-05-28T19:16:45.133 に答える