如何轮询和退出子进程

时间:2012-01-30 18:10:59

标签: python subprocess

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

有3个问题:

  • 现在的程序打印出“完成”然后等待 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()

0 个答案:

没有答案