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

看起来你打电话给我无法重现的“嗅探”正在阻塞。这对于与网络相关的方法非常常见。

您应该将您的嗅探方法放在一个单独的线程中,然后,可以在主循环中处理您的异常(并且您还必须处理在异常时停止线程)。

于 2012-08-09T09:31:45.993 回答