Linuxでは、ファイルの終わりにヌル文字がないのは正常ですか?
空のファイルを作成し、マウスパッドで開いてazを書き込みます。
それを保存。
16進エディターでファイルを開くと、ヌル文字はありませんが、0aがあります。
ファイルの終わりにはどのヌル文字を入れる必要がありますか?
システムコールでファイルを書くとき。
0aですか?または0?
ありがとう
Linuxでは、ファイルの終わりにヌル文字がないのは正常ですか?
空のファイルを作成し、マウスパッドで開いてazを書き込みます。
それを保存。
16進エディターでファイルを開くと、ヌル文字はありませんが、0aがあります。
ファイルの終わりにはどのヌル文字を入れる必要がありますか?
システムコールでファイルを書くとき。
0aですか?または0?
ありがとう
通常、Unixのファイルの終わりにはヌル文字はありません。空のテキストファイルのバイト数はゼロです。1つの空の行には、0x0A(LF、改行)文字が含まれます。Unixテキストファイルには、単一のLF行末があります。
ファイルシステムはファイル内のバイト数を記録し、すべてのバイトは自由に任意の値を持つことができます。特定の文字/バイト値は、ファイルの終わりを意味する予約済みの番兵値ではありません。したがって、ファイル内のどこにでもNULを含めることができますが、終了をマークするためにNULは必要ありません。
テキストファイルの各行は、実際には改行、ASCII 10 dec、0A hexで終了する必要があります(Windowsでは、キャリッジリターンASCII 13 decの後に改行が続きます)。空のファイルを作成するecho > filename
と、改行が1つになりますが、これは、echoがデフォルトで空の行を出力するためです。代わりに使用touch filename
した場合は、完全に空になります。
cat > filename
ターミナル/コンソールウィンドウに何かを入力すると、最終的にControl-Dを使用してファイルの終わりの状態をトリガーします(Linux / DOSのControl-Zの場合)が、その文字はファイル自体に保存されません。
0aは改行、別名control-Jまたは\n
です。Unixでは、テキストファイルは通常ヌル文字で終了しません。
誰がファイル形式を実装したかによります。