Talvez esse esquema possa esclarecer a situação. Esta é a configuração usual:
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, …)
E não há como conectar novidades Process3
como esta:
Terminal
device
|
(screen)<---o---[<output]--x------(stdout) Process1
Terminal (keyboard)---/-x--[input >]-o-\---->(stdin)
| / \ \
| | \ `---(stdout) Process2
| | `--->(stdin)
| |
\ `---------------------(stdout) Process3
`--------------------->(stdin)
O que a tela (e outras) faz é alocar algum dispositivo pseudo-terminal (como o xterm) e redirecioná-lo para um ou mais terminais "reais" (físicos, virtuais ou emulados):
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)
Usando screen -x
você pode conectar mais um terminal, xterm, o que quer que seja (digamos Terminal 3
) à sessão da tela.
Portanto, não, você não pode se comunicar diretamente através do stdin / stdout com processos conectados a um terminal diferente. Você só pode fazer isso através do processo que está controlando este terminal se for um pseudo terminal e se esse processo foi permitido (como a tela é).