我想开始一个过程,等待2秒并打印出目前为止stderr和stdout管道中的任何内容,然后退出 . 这是我到目前为止的代码,它似乎没有像希望的那样工作 . 我究竟做错了什么?

有3个问题:

  • 现在的程序打印出"done"然后在打印出第一行之前等待suprocess完成 .

  • 目前,脚本读取一行 . 如何读取当前缓冲区的末尾?
    如果调用脚本退出,

  • 子进程会退出吗?如果是这样,我应该如何修改函数调用,以便即使调用脚本退出,子进程也会运行完成?

cmdStr = "./stepper.py"
proc = subprocess.Popen(cmdStr, shell=True, bufsize=-1, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
print "polling"
time.sleep(2)
print "done"
print proc.stdout.readline()

以下是stepper.py的样子:

out = open("stepper.log", 'w')
for idx in range(3):
    time.sleep(2)
    print "Idx",idx
    sys.stdout.flush()
    out.write("%d\n"%(idx))
print "fnished"
out.write("cloing\n")
out.close()