使用嗅探功能时未捕获Keyboardinterrupt

时间:2012-08-09 09:19:56

标签: python multithreading scapy keyboardinterrupt

我试图在键盘中断时清空列表,但这不起作用。以下是我的代码。

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

我尝试了所有可能的事情,但这个中断处理程序无法正常工作。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

看起来你打电话给'嗅',我无法重现,是阻挡。它与网络相关的方法非常常见。

你应该把你的sniff方法放在一个单独的线程中,然后,它可以在主循环中处理你的异常(你还必须处理在异常时停止线程)。