我试图在键盘中断时清空列表,但这不起作用。以下是我的代码。
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
我尝试了所有可能的事情,但这个中断处理程序无法正常工作。有什么帮助吗?
答案 0 :(得分:1)
看起来你打电话给'嗅',我无法重现,是阻挡。它与网络相关的方法非常常见。
你应该把你的sniff方法放在一个单独的线程中,然后,它可以在主循环中处理你的异常(你还必须处理在异常时停止线程)。