在Python中,可以使用subprocess
模块来创建和管理子进程,并通过subprocess.Popen
类提供的方法来获取子进程的相关信息。
以下是一些常用的方法:
Popen.poll()
:检查子进程是否已经结束,并返回进程的退出代码。如果进程还在运行,返回None
。Popen.wait(timeout=None)
:等待子进程结束,返回进程的退出代码。如果参数timeout
不为None
,则在超时时间内等待子进程结束。Popen.communicate(input=None, timeout=None)
:与子进程交互。向子进程的标准输入发送数据,并获取子进程的标准输出和标准错误输出。可以通过参数input
指定要发送的数据,通过参数timeout
指定超时时间。Popen.stdout
:子进程的标准输出流,可以通过该属性读取子进程的输出。Popen.stderr
:子进程的标准错误输出流,可以通过该属性读取子进程的错误输出。
下面是一个例子,演示了如何创建和管理子进程,并获取子进程的输出:
import subprocess
# 创建子进程并执行命令
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 等待子进程结束
process.wait()
# 获取子进程的标准输出和标准错误输出
output, error = process.communicate()
# 打印输出结果
if output:
print(output.decode('utf-8'))
if error:
print(error.decode('utf-8'))
在上面的例子中,我们使用subprocess.Popen
创建了一个子进程,并执行了ls -l
命令。然后,我们使用wait
方法等待子进程结束,使用communicate
方法获取子进程的输出。最后,我们将输出结果打印出来。