2014-02-05 47 views
0

我正在python中使用scapy實現一個多線程網絡掃描器。我想退出keyboardInterrupt上的所有線程。我設法完成了以下代碼,但並不是所有線程都在引發的異常中退出。我有以下代碼處理線程並捕獲異常。 謝謝在python的keyboardInterrupt退出線程

+0

你真的認爲有人會讀你的代碼牆? – michaelmeyer

+0

這真的沒關係,如果你明白我在我的問題中提到的那些東西...... –

回答

1

這只是一個小記。 通常情況下,KeyboardInterrupt將提高在主線程,從而使你做線沿線的東西:

import threading 
main = None 
for t in threading.enumerate(): 
    if t.name == 'MainThread': 
     main = t 
while main.isAlive(): 
    ... 

每當主線程死亡這將打破循環。 您也可以枚舉主循環中的線程數並殺死主進程,並使用此主線程檢查有效地終止所有線程。

或者你可能有一個錯誤標誌,所有線程都可以聽到。 一旦發生異常,錯誤標誌會向所有其他線程指出發生了錯誤,現在是時候關閉了。

+0

感謝你的提示,我也在我的代碼中實現了錯誤標記方法。最後,我調試它,現在工作正常。 –

+0

@devilfox很高興聽到,我貼的代碼顯然會進入你的子線程:) – Torxed