複数のプロセスが同時にSTDIN、STDOUTにアクセスする方法。それぞれのインスタンスは、他のプロセスI/Oで問題を引き起こさずに独立して実行していますか?複数のプロセスが同時にSTDIN/STDOUTを使用する方法は?
答えて
STDINとSTDOUTは、I/Oストリームのためだけの別名です。各プロセスには独自のSTDINとSTDOUTがあります。
しかし、2つのプロセスがそれぞれ独自のSTDINとSTDOUTを同じストリームにマッピングすることは可能です。結果は奇妙です。
コンソールに読み書きする複数のプログラムをバックグラウンドで実行してみてください。
システムがカオスを回避する方法は、システム保護によるものです。通常のユーザは、他人の端末を読み書きする端末からプログラムを実行することはできません。
しかし、自分のコンソール/端末から読み書きする複数のプログラムを実行して自分自身を台無しにしたいのであれば、システムはあなた自身をあなたから保護しません。
システムはそれをどのようにしていますか?さらなる情報のための任意のリソース? – 4bh1
eunuchsでは、最初の3つのファイル番号です。各プロセスはそれぞれ独自のプロセスを取ります。 – user3344003
STDIN/STDOUTはファイル記述子にすぎず、各プロセスは独自のFDを持ちます。
議論以下あなたのためになり牛肉のヘルプ:
https://unix.stackexchange.com/questions/96724/how-can-a-command-have-more-than-one-output
tty "共有"は、POSIX端末制御、ジョブ制御、セッション、プロセスグループによって管理されます。関連する文書を読む(非常に技術的)。 stdin/stdoutは通常、ttysへのファイルハンドルであり、プロセスにはプライベートなものであり、それ自体では問題はありません。問題は同じ「デバイス」に接続されていて、 –
少なくともstdoutでは、多くのプロセスが同じファイル(またはコンソール)への書き込みを終了したとしても、stdoutに書き込むことができます。出力は単純に混在しています。 – linuxfan