
tty は最大 1 つのセッションを制御でき、さらに、制御されたセッション内のバックグラウンド プロセス グループが tty に書き込みまたは読み取りできないように tty を制御できると言われています。前者はオプションによって制御されますTOSTOP
。
しかし、他のセッションが tty に書き込む位置はどうなっているのでしょうか? 何らかの方法で制御できますか?tty1
と をtty2
シェルで想定します。 で次のコマンドを実行するとshell2
、tty2
...
ls > /dev/tty1
... でオプションが何に設定されていたかに関係なく、実際にls
はからの出力が生成されました。 は完全に別のセッションの一部であるため、バックグラウンド プロセス グループから書き込もうとすると、オプションが期待どおりの動作をするため、これが原因である可能性があると考えました。何が起こっているのか、誰か教えてくれませんか?tty1
TOSTOP
tty1
shell2
TOSTOP
答え1
オプションTOSTOP
(例えばUnix パワーツール、 またはLinux csh スクリプトが & (bg) で実行中に Suspended (tty 出力) になる)はシェルの背景プロセス。この状況では、前景と背景には知られている関係。
しかし、あなたのプロセスがターミナルを開いている場合、そのプロセスは(ほとんどの場合)そのターミナルに対する権限を持っており、あなたが所有する別のプロセス(別のターミナルで実行中)はないその関係があれば、同じデバイスを開いて書き込むことができます。