Unix提供了幾種中止或暫停程序的信號。這些信號是intr、quit和stop。程序員
intr信號有兩個用途:首先可使用它中止一個僵死的程序。可是一些程序被編程爲忽略intr信號。在這種狀況下,程序總會提供一種明肯定義的結束程序的方法(一些quit類型的命令)。經過忽略intr信號,程序能夠防止不當心按下^C而致使程序故障。在這種狀況下,咱們稱程序封閉了intr信號。例如vim就封閉了intr信號。當你在shell提示處鍵入Unix命令時,intr信號的第二個用途就出現了。若是鍵入了一條命令,而你改變了主意,能夠按下^C以取消命令。shell
肯定不要混淆了intr和kill。當鍵入一條命令時,intr取消命令;而kill刪除命令行上的全部字符。編程
除了intr以外,還有另一種鍵盤信號quit,能夠用來中止程序。quit鍵一般是^\。vim
intr和quit之間有什麼區別呢?區別並不大。之前quit主要由須要終止測試程序的高級程序員使用。當按下^\時,它不只中止程序,並且還會告訴Unix爲此時內存中的內容製做一份副本。該信息存儲在一個磁芯文件(core file)中,也就是一個名爲core的文件中。而後程序員可使用特殊的工具分析磁芯文件,查找什麼地方出了問題。工具
如今程序員擁有了更好的調試工具,所以在大多數系統上,quit信號再也不生成磁芯文件,儘管一些編程環境仍在使用磁芯文件幫助調試。若是沒有調試過程序,可是一個名爲core的文件神祕地出如今你的一個目錄中,那麼這意味着你運行的程序出現了嚴重的錯誤而停止。除非真的須要這個文件,不然能夠刪除它。實際上,你應該刪除這個文件,由於core文件至關龐大,沒有理由去浪費空間。測試
若是一個程序生成的輸出太多,在屏幕上一閃而過。咱們能夠按下^S鍵發送stop信號。這個信號告訴Unix臨時中止屏幕顯示。一旦顯示過程暫停,你能夠經過按下^Q發送start信號從新啓動屏幕顯示。ui
可是你應該理解^S只是告訴Unix中止輸出的顯示,它不會暫停正在執行的程序。程序會繼續執行,不會中止生成輸出。Unix將存儲輸出,所以輸出不會丟失,一旦你按下^Q,剩下的所有輸出將顯示。若是在屏幕顯示暫停時生成了大量的新數據行,那麼一旦按下^Q,這些新數據行將飛速地衝過。spa