使用子进程查找进程何时结束

时间:2010-07-07 15:56:24

标签: python windows process build-automation fork

我希望顺序运行一些c脚本,这些脚本分叉自己的进程(在新的命令行窗口中),并在完成后给出"Press any key to continue..."。从技术上讲,它是一个特殊的编译器。它弹出acommand行窗口,告诉我编译是否成功。但是那个命令行窗口会分配新的进程来编译,这会使它返回0之前应该...

我的第一次尝试是

    process = subprocess.Popen(cmd)
    process.wait()
迭代每个文件时

。不幸的是,这并不等待“按任意键继续...”并在我的脸上爆炸。似乎在内部进程完成时(我无法访问)传递wait()调用。

相反,如何等待“按任意键继续......”?它还会在按下任何键之前打印一些其他信息以继续排列..

目前,这就是我的代码:

            process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
            completed = False
            while not completed:
                if process.poll() is not None:
                    completed = True

            print "communicating"
            process.communicate("k")
            print "communicated"

1 个答案:

答案 0 :(得分:2)

您可以使用subprocess.poll检查状态而不阻止,并subprocess.communicate将信息发送到子流程。