Tal vez este esquema pueda aclarar la situación. Esta es la configuración habitual:
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, …)
Y no hay forma de conectar algo nuevo Process3
como este:
Terminal
device
|
(screen)<---o---[<output]--x------(stdout) Process1
Terminal (keyboard)---/-x--[input >]-o-\---->(stdin)
| / \ \
| | \ `---(stdout) Process2
| | `--->(stdin)
| |
\ `---------------------(stdout) Process3
`--------------------->(stdin)
Lo que hace la pantalla (y otras) es asignar algún dispositivo pseudo terminal (como lo hace xterm) y redirigirlo a uno o más terminales "reales" (físicos, virtuales o 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)
Utilizando screen -x
puede conectar un terminal más, xterm, lo que sea (digamos Terminal 3
) a la sesión de pantalla.
Entonces, no, no puede comunicarse directamente a través de stdin / stdout con procesos conectados a un terminal diferente. Solo puede hacerlo a través del proceso que controla este terminal si resulta ser un pseudo terminal, y si este proceso fue concebido para hacerlo (como lo es la pantalla).