2012-06-30 39 views
0

我編寫了一個程序來解析使用DNSPython庫的SubDomain。
當程序運行和子域解決我寫的退出處理程序來處理CTRLÇ信號:如果用戶按下CTRL ç程序不會終止python退出處理程序不能在程序解析DNS時探測工作

def exitHandler(signum = 0, frame = 0): 
    print("Kill Process..") 
    os.kill(os.getpid(), 9) 
    sys.exit(0) 

立即在某些情況下程序被鎖定!
我該如何解決這個問題?

+1

你試圖從內部殺死進程?這似乎沒有必要。你有沒有發現這個代碼,我想知道的理由。 –

+2

python中的信號處理程序只能由解釋程序在python操作碼之間的安全點運行。如果程序停留在某些C代碼或不可中斷的sys調用中,則處理程序將不會運行,直到控制返回到man解釋程序循環。 – gps

回答

1

當您在Python進程上使用Ctrl-C時,它會結束。無需編寫自己的退出處理程序,當然也不需要嘗試殺死自己的進程,然後致電sys.exit。這似乎(字面上)像過度殺人。

+0

我打電話給我退出處理程序使用此代碼:signal.signal(signal.SIGINT,exitHandler)。我評論代碼和運行程序..當我按下ctrl + c程序崩潰.... – AminM

+1

@JesonPark:你需要請解釋爲什麼您首先編寫了處理程序,因爲當您鍵入Ctrl-C時Python將退出,並且在這種情況下您需要提供「崩潰」的詳細信息,如果需要更多幫助。 –

+0

+1「超殺」。因爲它的權利當然。 –