次のコードを見てみましょう。
int main(void)
{
char c;
while ((c = getchar()) != EOF)
putchar(c);
return (0);
}
このプログラムは、改行が文字として渡された後にのみ、文字をエコーバックします。readシステムコールを使用して直接読み取り、lenを1として渡してみましたが、新しい行が渡された場合にのみ読み取ります。ここに2つの質問があります:この最適化を実装したのは誰ですか、それはカーネルですか、それともターミナル/シェルですか?
第二に、誰が最初にキャラクターをエコーバックしているのか、それは最初のプレス自体です。ターミナル/シェルは、このプログラムの実行全体で何らかの役割を果たしますか?