2010-09-22 171 views
4

我有一個多線程的程序,並使用signal.signal(SIGINT,FUNC)當按下CTRL C殺掉所有線程。我的問題是這樣的:信號處理程序,蟒蛇

我要打電話從主signal.signal(...)的巨蟒。我是否必須在循環中調用該函數,或者我可以將其設置爲一次,只要用戶按下ctrl c,信號就會被捕獲?

回答

2

只有主踏板可以處理信號。只需使所有線程成爲「守護進程」線程(在啓動線程之前將線程對象的.daemon屬性設置爲True),以確保線程在主線程執行時終止。

+0

好的,謝謝,但在主,我需要調用signa.signal(SIGINT,FUNC)在一個循環中(例如在真)或可我只是在主稱它爲一次? – Juli 2010-09-22 02:37:52

+0

@Juli,只要一次,只要'main'由於執行'func'而終止。 – 2010-09-22 02:55:52

+0

你說''.daemon == True'線程會在主線程終止時被中斷並終止? – n611x007 2013-11-12 09:04:40