可能重复:
Bypassing buffering of subprocess output with popen in C or Python
我正在构建一个应该无限期运行的服务器cmd行脚本的包装器。 我需要做的是在不等待子进程完成的情况下获取当前的结果。
我的意思是,如果我运行以下内容,一切正常:
ls = Popen(["ls"], stdout=PIPE)
output = ls.stdout.read()
但是如果我对一个无限期运行的程序做同样的事情:
server = Popen(["python","-m","SimpleHTTPServer"], stdout=PIPE)
output = server.stdout.read()
它不会回来......
更新:偶数
output = server.stdout.read(1)
...挂起
您是否知道是否有办法以独立于操作系统的方式从Popen(或类似的线程实现)捕获部分输出?
答案 0 :(得分:-1)
我猜想read()会返回整个内容吗?如果您在循环中读取固定大小的块,则可能会获得更好的结果。