如果寫的python程式是多執行緒或多程序的,就涉及到程式安全退出的問題。
需要先將子程序逐個殺掉後再退出主程序,不然會導致主程序退出(ctrl+c)後子程序不退出而繼續執行。
需要在啟動多執行緒時將執行緒的"daemon"屬性設定為"true"(預設為"false"),
否則程式會死鎖而無法退出(ctrl+c);
下面是示例**:
import signal
import threading
def sig_handler(sig, frame):
try:
th_timeout.stop()
th_timeout.join()
except exception, ex:
exit(0)
def main():
...
##set signal handler
signal.signal(signal.sigterm, sig_handler)
signal.signal(signal.sigint, sig_handler)
global th_timeout
th_timeout.setdaemon('true')
th_timeout.start()
if __name__ == "__main__":
main()
Python訊號處理
通常我們認為,在try語句中,finally一定會執行。coding utf 8 import time import os import logging try print start try,sleep 30s.print pid s os.getpid time.sleep 30 print ...
python多執行緒下訊號處理程式示例
下面是乙個網上 的實現思路,經過oyyaovp驗證,發現是可行的,就記錄下來。思路python多執行緒中要響應ctrl c的訊號以殺死整個程序,需要 1.把所有子執行緒設為daemon 2.使用isalive 函式判斷所有子執行緒是否完成,而不是在主線程中用join 函式等待完成 3.寫乙個響應ct...
LinuxNP 訊號與訊號處理函式
程序a向程序b傳送訊號 忽略 恢復某訊號 訊號是當作業系統中某些情況發生改變時,由作業系統向程序傳送,程序可對訊號進行捕捉並處理 程序缺省會對不同的訊號進行處理,使用者可通過自定義訊號處理函式並使用signal 將自定義的訊號處理函式與指定訊號進行繫結,訊號處理函式在訊號預設處理方式之前呼叫,原先處...