บางทีสคีเหล่านี้สามารถชี้แจงสถานการณ์ นี่เป็นการตั้งค่าปกติ:
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 กับกระบวนการที่เชื่อมต่อกับเทอร์มินัลอื่น คุณสามารถทำได้ผ่านกระบวนการที่ควบคุมเทอร์มินัลนี้หากเกิดขึ้นเป็นเทอร์มินัลหลอกและหากกระบวนการนี้ได้รับการยอมรับให้ทำเช่นนั้น (เช่นหน้าจอ)