gpt4 book ai didi

在子进程 : how to close subprocess properly? 中使用 tcpdump 的 Python

转载 作者:太空狗 更新时间:2023-10-30 02:41:13 28 4
gpt4 key购买 nike

我有一个 Python 脚本,用于在 subprocess 中使用 tcpdump 捕获网络流量:

p = subprocess.Popen(['tcpdump', '-I', '-i', 'en1',
'-w', 'cap.pcap'], stdout=subprocess.PIPE)
time.sleep(10)
p.kill()

当这个脚本完成它的工作时,我试图在 Wireshark 中打开输出 .pcap 文件并得到这个错误:

"The capture file appears to have been cut short in the middle of a packet."

什么解决方案可以应用于“正确”关闭 tcpdumpsubprocess

最佳答案

代替 p.kill(),您可以使用 p.send_signal(subprocess.signal.SIGTERM) 发送终止信号而不是终止信号(p.terminate() 做同样的事情)。

Popen docs描述 send_signal() 命令。关于信号的文档有点薄弱,但是 dir(subprocess.signal) 会列出您可能发送给进程的所有信号,但是终止应该允许它有一些时间来清理。

关于在子进程 : how to close subprocess properly? 中使用 tcpdump 的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40140000/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com