
我們被告知,一個 tty 最多可以控制一個會話,此外,可以控制 tty 不允許其受控會話中的後台進程組對其進行寫入或讀取,前者由該TOSTOP
選項控制。
但是,其他會話寫入 tty 的位置如何?可以透過某種方式控制嗎?假設tty1
和tty2
,都帶有殼。我很驚訝shell2
下面的命令tty2
......
ls > /dev/tty1
ls
……實際上從on產生了輸出tty1
,無論TOSTOP
in 中的選項設定為何tty1
。由於shell2
它完全是另一個會話的一部分,我想可能就是這樣,因為該TOSTOP
選項確實在嘗試從後台進程組寫入時執行了它應該執行的操作。有人可以告訴我發生了什麼事嗎?
答案1
該TOSTOP
選項(例如在Unix 電動工具, 或者當使用 & (bg) 運行時,Linux csh 腳本將暫停(tty 輸出)) 指的是 shell 的背景流程。在這種情況下,前景和背景有一個已知的關係。
但是,如果您的進程打開了一個終端,它(幾乎總是)對其具有權限,並且您擁有的另一個進程(在不同的終端中運行)不會不是具有這種關係可以打開同一設備並向其寫入。