Python子进程读取

| 有此代码
p = subprocess.Popen(\'tail -f /var/log/syslog\', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

for line in p.stdout.readlines():
    print line,
    time.sleep(1)
即使我在syslog中添加了一些内容,脚本也会挂起并且不会写任何行。 为什么?     
已邀请:
readlines()直到进程中有一个eof时才返回,因为尾部不会在没有中断的情况下完成,因此不会出现。 您可以将循环更改为:
while True:
    print(p.stdout.readline())
除非您希望每行之间有一个额外的1s间隔。否则就不需要睡眠,因为在有完整行可用之前,readline将使用最少的资源进行阻塞。     
您也可以直接在python中模拟
tail -f
。 检查一下:Python中的tail -f(Python配方) 或这样:模拟\“ tail -f \”命令或Google以获取更多示例。     

要回复问题请先登录注册