Linux
當終端仿真器終止時,誰向偽終端的控制程序發送 SIGHUP?
當終端斷開連接時,作業系統核心向終端的控制程序發送 SIGHUP。
當終端仿真器終止時,誰向終端仿真器底層偽終端的控制程序發送 SIGHUP:作業系統核心還是終端仿真器?
謝謝。
答案已經包含在您的問題中。當終端斷開連接時,核心會向終端的控制程序發送 SIGHUP¹。對於由核心中的驅動程序創建的終端,當驅動程序這樣說時,終端就會斷開連接。對於偽終端,當終端主端的文件句柄關閉時(因為終端仿真器程序顯式關閉它或因為終端仿真器程序死亡),終端將斷開連接³。
¹控制程序是在終端中首先執行的任何程序——更準確地說,它是第一個在作為會話負責人時打開終端或在終端打開時成為會話負責人的第一個程序,如果此程序仍然是會話負責人。
²主端是模擬器端。從端是在終端中執行的應用程序的端。
³如果多個程序打開了終端的主端,它們必須都關閉它們的文件描述符(可能通過死亡),以便關閉文件描述符。