2

可能重复:
在 C 或 Python 中使用 popen 绕过子进程输出的缓冲

我正在围绕应该无限期运行的服务器 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(或类似的线程实现)捕获部分输出?

4

1 回答 1

-1

我猜 read() 返回全部内容?如果您在循环中读取固定大小的块,您可能会得到更好的结果。

于 2009-10-05T21:40:03.673 回答