Можливо, ці схеми можуть прояснити ситуацію. Це звичайне налаштування:
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 робить) та перенаправлення його на один або кілька "реальних" терміналів (фізичний, віртуальний або емуляційний):
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
ви можете приєднати ще один термінал, xterm, що завгодно (скажімо Terminal 3
) до сеансу екрана.
Так що ні, ви не можете безпосередньо спілкуватися через stdin / stdout з процесами, приєднаними до іншого терміналу. Це можна зробити лише через процес, який керує цим терміналом, якщо трапляється псевдотермінал, і якщо цей процес був задуманий зробити це (як, наприклад, екран).