在Python中使用子进程返回进程的结束

时间:2018-02-24 19:25:54

标签: python docker subprocess

我正在使用子进程(Python 2.7)来调用软件容器(Docker)上的进程。此过程在目录中创建一些文件。我需要在进程结束并创建文件时,函数F返回一个布尔值,以便我知道我可以访问这些文件。我怎样才能做到这一点?

def F():
    cmd1 = 'my_command_that_invoke_docker'
    process = subprocess.Popen(cmd1, shell=True)

1 个答案:

答案 0 :(得分:1)

您可以等待子进程终止。

如果您想要来自子流程的STDOUT和/或STDERR流(和/或发送数据来处理' STDIN),请使用process.communicate方法:

stdout, stderr = process.communicate()

process.returncode将退出状态。

另一方面,如果您只需要等待进程终止而没有任何流捕获,请使用process.wait方法:

returncode = process.wait()

returncode将包含子流程的退出状态。

**请注意,在shell=True的情况下,子进程本身就是shell(除非你直接exec任何命令。)