0

キーボード割り込みがあるたびにリストを空にしようとしていますが、これは機能しません。以下は私のコードです。

while 1:
    try:
       n=0
       while n<10:
           pkt=sniff(prn=lambda x:x.sprintf("{Ether : %ether.src% --> %ether.dst%}"),timeout=1,store=1)
           buffpkt+=pkt[:]  ##Store packets in a list buffer
           n+=1
       self._tempbuffstore(buffpkt)

    except KeyboardInterrupt:
        buffpkt=[]  ##Flush the list asynchronously "THIS IS THE MAIN REQUIREMENT FOR INTERRUPT"
        raise

考えられるすべてのことを試みましたが、この割り込みハンドラーが機能していません。何か助けはありますか?

4

1 に答える 1

1

再現できない「sniff」への呼び出しがブロックされているようです。ネットワーク関連のメソッドでは非常に一般的です。

sniff メソッドを別のスレッドに配置する必要があります。そうすれば、メイン ループで例外を処理できます (また、例外でスレッドを停止する必要があります)。

于 2012-08-09T09:31:45.993 に答える