バックグラウンドプロセスのstdout出力はフォアグラウンドプロセスのstdin入力として扱われますか?

バックグラウンドプロセスのstdout出力はフォアグラウンドプロセスのstdin入力として扱われますか?

バックグラウンドプロセスが端末に表示されるようにstdoutに出力すると、その出力はフォアグラウンドプロセスのstdin入力と見なされますか?バックグラウンドプロセスとフォアグラウンドプロセスはパイプを介して関連していません。

この問題は、フォアグラウンドプロセスがstdinの入力を待っている間に端末に入力して入力できるために発生します。バックグラウンドプロセスのstdout出力も同じことをするようです。バックグラウンドプロセスは端末に「入力」しており、フォアグラウンドプロセスはstdin入力を待っています。。それでは、フォアグラウンドプロセスはなぜバックグラウンドプロセスのstdout出力をstdin入力として使用しないのですか?

私の経験ではそうではないようです。私が正しいなら、なぜできないのですか?

答え1

端末は概念的にプロセスからstdin分離されていますstdout。キーボード入力と画面出力のための「ターミナル」について話しているので、これは混乱する可能性があります。

ただし、プロセスはキーボード入力を画面に表示せずに読み取ることができます。たとえば、ログインすると入力した内容からパスワードが読み込まれますが、画面には表示されません。

もちろん、このプロセスでは、キーボードを入力しなくても画面に出力を印刷できます。

tee出力ストリームは画面に書き込むことができます(例:そして他のプロセスに渡しますが、同じではありません。

要するに、画面に何かを印刷することは、キーボードで何かを入力するのとは異なります、両方を説明するために「ターミナル」という単語を使用します。

答え2

いいえ、stdinとstdoutは別々のチャンネルだからです。明示的にパイプを使用しない限り、接続はありません。 printステートメントの出力が後続の入力ステートメントの入力になることを望みませんか?

関連情報