来自http://docs.python.org/library/functions.html#open
可选的缓冲区参数bufsize表示文件期望的缓冲区大小:0表示不带缓冲,1表示行缓冲,任何其他正值表示使用大约该大小的缓冲区。负数的缓冲区大小意味着使用系统默认值,通常是对于tty设备进行行缓冲,对于其他文件进行完全缓冲。如果省略,则使用系统默认值。
我在下面使用了0作为bufsize参数,但运行main_process时没有使用flush()而没有输出写入文件。
这是什么原因?
# --------------------------------- sub_process.py
import sys
import time
if __name__ == '__main__':
print 'printed from redirect.py'
# why is the following flush() needed? 'std-output' is (?) unbuffered...
sys.stdout.flush()
time.sleep(6)
# --------------------------------- main_process.py
import subprocess
import time
if __name__ == '__main__':
p = subprocess.Popen(
['python', 'sub_process.py'],
stdout=open('std-output', 'w', 0))
time.sleep(3)
p.terminate()
sys.stdout
->subprocess.PIPE
不起作用。flush()
是答案,但我们为什么需要它呢? - Mike Pennington