以下を含むファイルに対してwcコマンドを実行すると、30個の文字数が表示されます。ファイル終了文字が含まれていますか?スペースと改行を含めると、29文字だけが可能です。
Hello World
Again Hello World
出力は次のとおりです
2 5 30 test
ベストアンサー1
Unix または Linux ファイルシステムにはファイルの終わり文字はありません。使用されたファイル記述子が通常のファイルを参照すると、システムread()
コールはファイル終了条件で0を返します。 read()
ソケットとパイプでは異なる動作をします。ファイルの終わりを示す特殊文字はありません。
wc
最初の行には行末(ASCII改行、数字は0x0a)を数える12文字があり、2行目には改行(別名改行)を数える18文字があるため、文字またはバイト数で30を提供します。
この場合、改行文字の0x0a値を表示する16進印刷出力がls -l
あるか、または取得できる場合はhexdump
文字数を再確認するために使用できます。xxd
C標準ライブラリ関数はfgetc()
ファイルの終わりに-1を返しますが、これはUnix(またはLinux)やシステムコールをread()
介さずにライブラリコードで実行されます。