私はアセンブリの初心者です(nasmを使用しています)。私は大学のコースを通して組立を学んでいます。sys_readシステムコールが新しい行を検出したときに、なぜ終了するのですか?
sys_read linuxシステムコールが呼び出されたときの動作を理解しようとしています。具体的には、sys_readは、新しい行または改行を読み込むと停止します。私が教えたことによると、これは事実です。このonline tutorial articleも事実/クレームを確認します。
sys_readが改行を検出すると、制御はプログラムに戻り、ユーザー入力はECXで渡したメモリアドレスに格納されます。
sys_read呼び出しのLinuxプログラマーズ・マニュアル(「man 2 read」を使用)を調べました。それは仮定されているときの動作を言及していません、そうですか?
read()は、ファイル記述子fd から最大countバイトをbufで始まるバッファに読み込もうとします。
シークをサポートするファイルでは、読み取り操作は ファイルオフセットで開始され、ファイルオフセットは読み取りバイト数 でインクリメントされます。ファイルのオフセットがファイルの終わりまたはそれを超えている場合、バイトは であり、read()はゼロを返します。
countがゼロの場合、read()は以下のエラーを検出することがあります。 にエラーがないか、またはread()でエラーがチェックされない場合は、0のカウントを持つ read()が0を返し、それ以外の効果はありません。
countがSSIZE_MAXより大きい場合、結果は不定です。
私の質問は本当に何故起こりますか?これはLinuxカーネルの仕様で、これが起こるべきか、それは他の何かの結果ですか?
説明と参考に感謝します! – Mercado