1
我試圖運行和處理一些java程序的stdout,發現我的Python腳本一直在等待。然後我寫了一個新的測試腳本來測試subprocess
,結果發現,再次我看不到輸出運行此時:子進程忽略bufsize參數
$ cat test.py
#!/usr/bin/env python
import subprocess
c = ['/usr/bin/tail', '-f', '/var/log/dmesg']
proc = subprocess.Popen(c,
bufsize=1,
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
for line in proc.stdout:
print line
爲什麼subprocess
無視我的bufsize
說法?是否有一些中間緩衝我缺少考慮?我期望讀取tail
的前10行,然後永久等待,直到新行被添加到dmesg
文件。我的用戶確實有權限,在bash
上運行命令給出輸出。
將tail
更改爲yes
似乎填充一些緩衝區,我可以看到很多輸出。
在'iter(proc.stdout.readline,''):'work? – 2014-11-05 15:58:41
@PadraicCunningham是的!謝謝,發佈它作爲答案:) – vz0 2014-11-05 16:00:58