Có lẽ các lược đồ có thể làm rõ tình hình. Đây là cài đặt thông thường:
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, …)
Và không có cách nào để cắm một số mới Process3
như thế này:
Terminal
device
|
(screen)<---o---[<output]--x------(stdout) Process1
Terminal (keyboard)---/-x--[input >]-o-\---->(stdin)
| / \ \
| | \ `---(stdout) Process2
| | `--->(stdin)
| |
\ `---------------------(stdout) Process3
`--------------------->(stdin)
Màn hình nào (và các màn hình khác) đang phân bổ một số thiết bị đầu cuối giả (như xterm hiện) và chuyển hướng nó đến một hoặc nhiều thiết bị đầu cuối "thực" (vật lý, ảo hoặc mô phỏng):
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)
Sử dụng screen -x
bạn có thể đính kèm thêm một thiết bị đầu cuối, xterm, bất cứ điều gì (nói Terminal 3
) vào phiên màn hình.
Vì vậy, không, bạn không thể giao tiếp trực tiếp thông qua stdin / stdout với các quy trình được gắn vào một thiết bị đầu cuối khác. Bạn chỉ có thể làm như vậy thông qua quá trình kiểm soát thiết bị đầu cuối này nếu nó là thiết bị đầu cuối giả và nếu quy trình này được che giấu để làm như vậy (giống như màn hình).