2014-02-05 4 views
0

저는 scapy를 사용하여 파이썬으로 멀티 스레드 네트워크 스캐너를 구현할 것입니다. keyboardInterrupt의 모든 스레드를 종료하고 싶습니다. 나는 다음 코드를 만들 수 있었지만 모든 스레드가 예외 발생시 종료되지는 않습니다. 스레드를 다루고 예외를 포착하는 다음 코드가 있습니다. 감사합니다.파이썬에서 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

관련 문제