2011-04-03 45 views

回答

7

ssh(與終端仿真器,screentmuxscript,以及一些其他程序)使用一個稱爲「僞終端」(或「PTY」)的事情,這就像一個撥號調制解調器連接。我這樣描述它,因爲這是此行爲的歷史淵源:如果您由於某種原因丟失了調制解調器連接,tty(或pty)驅動程序檢測到載波丟失,並將SIGHUP(「Hangup」)發送到您的會話。這使程序能夠保存其狀態(例如,vi/vim將保存您修改但未保存以供恢復的任何文件)並乾淨地關閉。同樣,如果網絡連接由於某種原因而離開(有人因電源或網絡電纜而絆倒?...或sssh由於某種奇怪原因轉儲了內核),pty會將SIGHUP發送給您的會話,以便它有機會保存任何未保存的內容數據。

從技術上說,tty/pty驅動程序將信號發送給連接到終端的進程組中的每個進程(進程組也與shell作業控制相關,但這是它們的原始目的)。一些其它的終端的信號處理相同的方式,例如按Ctrl +Ç發送SIGINT Ctrl鍵+\發送SIGQUIT(和Ctrl鍵 + Ž發送SIGTSTP,和程序,不處理SIGTSTP暫停自己發送SIGSTOP;這個雙重信號允許vim設置終端從編輯模式回到正常模式,並在許多終端仿真器交換到預編輯屏幕緩衝區)。

+0

嗯,這似乎是有道理的。非常感謝! – fireworks2 2011-04-03 04:06:35