たぶん、これらのスキーマは状況を明確にすることができます。これは通常の設定です。
Terminal (/dev/ttyX or /dev/pts/x)
device
|
(screen)<--[<output]----x-------(stdout) Process1
Terminal (keyboard)---[input >]---o-\----->(stdin)
\ \
(hardware console or \ `----(stdout) Process2
virtual console or terminal `---->(stdin)
emulators like xterm, …)
そして、このようないくつかの新しいプラグインする方法はありませんProcess3
:
Terminal
device
|
(screen)<---o---[<output]--x------(stdout) Process1
Terminal (keyboard)---/-x--[input >]-o-\---->(stdin)
| / \ \
| | \ `---(stdout) Process2
| | `--->(stdin)
| |
\ `---------------------(stdout) Process3
`--------------------->(stdin)
画面(およびその他)が行うことは、(xtermが行うように)疑似端末デバイスを割り当て、1つ以上の「実際の」端末(物理、仮想、またはエミュレート)にリダイレクトすることです。
Terminal pseudo
devices ,--> Terminal (/dev/pts/x)
| _______/ device
Terminal <--[<output]--- | | |
1 ---[input >]--> |screen | <--[<output]---x-----(stdout) Process1
|Process| ---[input >]--o-\--->(stdin)
Terminal <--[<output]--- | | \ \
2 ---[input >]--> |_______| \ `--(stdout) Process2
`-->(stdin)
を使用screen -x
すると、もう1つの端末であるxtermを(たとえばTerminal 3
)スクリーンセッションに接続できます。
いいえ、別の端末に接続されているプロセスとstdin / stdoutを介して直接通信することはできません。これは、この端末が疑似端末である場合、およびこのプロセスが(画面のように)完了している場合にのみ、この端末を制御しているプロセスでのみ実行できます。