EOF および標準入力ストリーム (stdin)
stdin は標準入力ストリームを指し、通常はコンソールからのユーザー入力を表します。ファイルとは異なり、標準入力には固有のファイルの終わり (EOF) インジケーターがありません。これは、fread や read などの関数を使用した stdin からの読み取りが、何らかの形式の EOF が手動で導入されるまで無期限に継続されることを意味します。
この動作を理解するには、次のループを考慮してください。
while ((c = read(0, buffer, BUFSIZ)) > 0) { // Processing logic }
Thisループは、読み取り関数が正の値を返す限り、標準入力から文字を読み取り続けます。ただし、EOF インジケーターがなければ、ループは決して終了しません。
標準入力に EOF を導入するには、ユーザーはさまざまな方法でこのフラグをシミュレートできます。
この EOF コマンドを入力すると、プログラムは次のように動作します。入力ファイルの終わりに達していました。その結果、上記のループは終了します。
編集: Stdin の EOF に関する説明
元の質問によると、stdin には本質的に EOF が欠落しているのか、また、 EOF コマンドを使用して手動で挿入する必要があります。答えは肯定的です。
stdin は、ファイルからリダイレクトされず、コンソールから直接取得される場合、その終わりが事前に決定されていないため、「無限」ファイルと見なすことができます。したがって、この「ファイル」の終わりは、EOF コマンドを通じてユーザーが手動で通知する必要があります。
以上がEOF は標準入力ストリーム (stdin) でどのように機能しますか?また、EOF を手動で導入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。