python子进程和读取stdout

时间:2013-07-18 01:32:21

标签: python shell subprocess

阅读子进程和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()

0 个答案:

没有答案