阅读子进程和stdout
的正确方法是什么以下是我的文件:
traffic.sh
code.py
traffic.sh:
sudo tcpdump -i lo -A | grep Host:
code.py:
proc = subprocess.Popen(['./traffic.sh'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
# Do some network stuff like ping places, send an email, open a few web pages and wait for them to finish loading
# Stop all traffic and make sure its over
data = proc.stdout.read()
proc.kill()
上面的代码有时会起作用,有时甚至不起作用。
它失败的时间,是由于卡在proc.stdout.read()上。
我遵循了一系列示例,建议为proc设置线程和队列,并在proc写入时读取队列。然而,这个投票率是如何工作的间歇性。
我觉得我对杀人和读书做错了。因为我可以保证在拨打电话时没有发生任何通信,因此,traffic.sh根本不应该打印任何东西。
那么为什么读取阻塞。
线程的任何干净替代方案?
修改 我也试过这个,希望读取不再阻止,因为进程将被终止
proc = subprocess.Popen(['./traffic.sh'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
# Do some network stuff like ping places, send an email, open a few web pages and wait for them to finish loading
# Stop all traffic and make sure its over
proc.kill()
data = proc.stdout.read()