0
我認爲SOF中已經提出了類似的問題。但是,我無法真正爲我的特殊情況找到適當的解決方案。我試圖建立一個守護進程,它會在啓動時打開幾個工作線程並繼續運行,直到收到SIGTERM。收到SIGTERM後,父線程將終止所有工作線程,整個過程將停止。這是我的代碼看起來像:線程啓動後信號處理程序不起作用
from lib.threadrunner import ThreadRunner
import signal
import time
def sigint_handler(signum, frame):
print 'Stop pressing the CTRL+C!'
signal.signal(signal.SIGINT, sigint_handler)
objectToRun = ClassToRun(cfg)
time.sleep(3)
# The below code uses threading module to create 3 threads
threadRunner = ThreadRunner()
threadRunner.load('Task Name', objectToRun)
threadRunner.start(3)
threadRunner.joinAll()
如果我打Ctrl + C
所有線程都開始之後發送SIGINT,該sigint_handler
功能不會被觸發,導致沒有被打印出來。但是,如果在線程啓動之前(在3秒的睡眠時間內)我可以打到Ctrl + C
,我確實看到了Stop pressing the CTRL+C!
打印。我不知道爲什麼這是這樣的行爲,我可以如何解決這個問題。 PS:如果你需要threadRunner
類的代碼,我會提供這個。