【发布时间】:2017-03-01 14:26:48
【问题描述】:
我有一个 Python 脚本可以在 subprocess 中使用 tcpdump 捕获网络流量:
p = subprocess.Popen(['tcpdump', '-I', '-i', 'en1',
'-w', 'cap.pcap'], stdout=subprocess.PIPE)
time.sleep(10)
p.kill()
当这个脚本完成它的工作时,我试图在 Wireshark 中打开输出 .pcap 文件并得到这个错误:
“捕获文件似乎在数据包中间被剪短了。”
对于tcpdump 的subprocess 的“正确”关闭可以应用什么解决方案?
【问题讨论】:
-
p.wait()应该等到该过程完成。我认为这个过程是“关闭的”? -
在我的情况下,它是“无限”过程(直到用户或计时器不关闭它)
-
您是在程序中使用
p.kill()还是通过其他方式中断? -
捕获 10 秒后,我在程序中使用
p.kill()
标签: python python-2.7 subprocess tcpdump