-1

When does the Read System call terminates when taking input from STDIN ??

4

1 に答える 1

2

これにはかなりの部分があります。

まず、OSレベルのIOとstdioレベルのIOの違いを明確にしましょう。read(2)およびwrite(2)(POSIX IO)はPOSIXによって指定され、ファイル記述子(0から始まる番号)を使用して動作します。fread(3)およびfwrite(3)(stdio IO)はISO Cによって指定されSTDIN、POSIXシステムでファイル記述子をカプセル化し、それらの上にいくつかのもの(出力バッファリングなど)を追加するなどのファイルハンドルを操作します。

したがって、自分でバッファリングread(2)write(2)行わないでください。0標準入力(ファイル記述子ではなく 、その上の1つの抽象化)で見られるバッファリングはSTDIN、ターミナル(またはターミナルエミュレーション)によって行われます。正規モードを検索して無効にします。

stdioレベルでは、fwrite(3)(およびprintf(3)fprintf(3)など)は、出力の接続先に応じて出力バッファリングを実行します。

参照:
Linuxでキーが押されたかどうかを確認する方法は?
端末に1文字が印刷されない
画面に印刷すると、カーネルモードに切り替わり、UnixでOSコードが実行されますか?

于 2012-08-19T13:36:55.370 に答える