https://blog.csdn.net/kongxx/article/details/50976802
http://blog.itpub.net/7728585/viewspace-2142060/
http://www.ywnds.com/?p=12330
def signal_quit(num,frame): print "\n" print "dddd..." sys.exit(1) def func_signal_handle(): signal.signal(signal.SIGINT,signal_quit) #執行ctrl+c會中斷 signal.signal(signal.SIGTERM,signal_quit) #SIGTERM比較友好,進程能捕捉這個信號,根據你的需要來關閉程序 while 1: func_signal_handle()
1) SIGHUP:當用戶退出shell時,由該shell啟動的所有進程將收到這個信號,默認動作為終止進程 2)SIGINT:當用戶按下了<Ctrl+C>組合鍵時,用戶終端向正在運行中的由該終端啟動的程序發出此信號。默認動 作為終止里程。 3)SIGQUIT:當用戶按下<ctrl+\>組合鍵時產生該信號,用戶終端向正在運行中的由該終端啟動的程序發出些信 號。默認動作為終止進程。 4)SIGILL:CPU檢測到某進程執行了非法指令。默認動作為終止進程並產生core文件 5)SIGTRAP:該信號由斷點指令或其他 trap指令產生。默認動作為終止里程 並產生core文件。 6 ) SIGABRT:調用abort函數時產生該信號。默認動作為終止進程並產生core文件。 7)SIGBUS:非法訪問內存地址,包括內存對齊出錯,默認動作為終止進程並產生core文件。 8)SIGFPE:在發生致命的運算錯誤時發出。不僅包括浮點運算錯誤,還包括溢出及除數為0等所有的算法錯誤。默 認動作為終止進程並產生core文件。 9)SIGKILL:無條件終止進程。本信號不能被忽略,處理和阻塞。默認動作為終止進程。它向系統管理員提供了可 以殺死任何進程的方法。 10)SIGUSE1:用戶定義 的信號。即程序員可以在程序中定義並使用該信號。默認動作為終止進程。 11)SIGSEGV:指示進程進行了無效內存訪問。默認動作為終止進程並產生core文件。 12)SIGUSR2:這是另外一個用戶自定義信號 ,程序員可以在程序中定義 並使用該信號。默認動作為終止進程。1 13)SIGPIPE:Broken pipe向一個沒有讀端的管道寫數據。默認動作為終止進程。 14) SIGALRM:定時器超時,超時的時間 由系統調用alarm設置。默認動作為終止進程。 15)SIGTERM:程序結束信號,與SIGKILL不同的是,該信號可以被阻塞和終止。通常用來要示程序正常退出。執行 shell命令Kill時,缺省產生這個信號。默認動作為終止進程。 16)SIGCHLD:子進程結束時,父進程會收到這個信號。默認動作為忽略這個信號。 17)SIGCONT:停止進程的執行。信號不能被忽略,處理和阻塞。默認動作為終止進程。 18)SIGTTIN:后台進程讀終端控制台。默認動作為暫停進程。 19)SIGTSTP:停止進程的運行。按下<ctrl+z>組合鍵時發出這個信號。默認動作為暫停進程。 21)SIGTTOU:該信號類似於SIGTTIN,在后台進程要向終端輸出數據時發生。默認動作為暫停進程。 22)SIGURG:套接字上有緊急數據時,向當前正在運行的進程發出些信號,報告有緊急數據到達。如網絡帶外數據 到達,默認動作為忽略該信號。 23)SIGXFSZ:進程執行時間超過了分配給該進程的CPU時間 ,系統產生該信號並發送給該進程。默認動作為終止 進程。 24)SIGXFSZ:超過文件的最大長度設置。默認動作為終止進程。 25)SIGVTALRM:虛擬時鍾超時時產生該信號。類似於SIGALRM,但是該信號只計算該進程占用CPU的使用時間。默 認動作為終止進程。 26)SGIPROF:類似於SIGVTALRM,它不公包括該進程占用CPU時間還包括執行系統調用時間。默認動作為終止進 程。 27)SIGWINCH:窗口變化大小時發出。默認動作為忽略該信號。 28)SIGIO:此信號向進程指示發出了一個異步IO事件。默認動作為忽略。 29)SIGPWR:關機。默認動作為終止進程。 30)SIGSYS:無效的系統調用。默認動作為終止進程並產生core文件。 31)SIGRTMIN~(64)SIGRTMAX:LINUX的實時信號,它們沒有固定的含義(可以由用戶自定義)。所有的實時信 號的默認動作都為終止進程
其次我們經常的按鍵也可以產生
Ctrl+c 2)SIGINT
Ctrl+\ 3)SIGQUIT
Ctrl+z 4)SIGTSTP
