
假設有一個會話,其中有多個進程並且沒有控制終端。
當會話領導者創建到控制終端的連線時,
同一會話中的其他進程如何得知該會話有一個控制終端並且
他們怎麼也能使用控制終端呢?
我提出這個問題的原因如下。通常,進程呼叫setsid()
啟動新會話並成為其領導者,並呼叫open()
連接到控制終端。然後會話領導者繼續處理fork()
子進程,子進程將檔案描述子繼承到控制終端。
然後我想知道如果一個會話已經有多個進程但沒有控制終端,然後領導者創建到控制終端的連接,然後會話中的其他進程怎麼辦?
謝謝。
答案1
會話領導者在獲得控制終端後創建的任何新子進程也將擁有該控制終端。控制終端是從父級繼承的。
換句話說:現有的孩子不受影響。