Python os.wait() 方法用于等待子进程结束,返回值为子进程的 pid 和状态码。
os.wait() 函数原型:
pid, status = os.wait()
其中,pid 为子进程的进程 ID,status 为子进程的退出状态码。
使用 os.wait() 方法时,父进程会一直阻塞,直到子进程结束,也就是说,os.wait() 方法不会立即返回。
当子进程结束时,os.wait() 方法会返回子进程的 PID 和状态码。状态码可以使用 os.WIFEXITED(status) 和 os.WEXITSTATUS(status) 方法进行解析,或者通过 os.WIFSIGNALED(status) 和 os.WTERMSIG(status) 方法判断子进程是因为信号结束。另外,当没有子进程时,os.wait() 方法会抛出 OSError 异常。
下面是一个示例:
import os
pid = os.fork()
if pid == 0:
print("这是子进程")
exit(0)
else:
print(f"这是父进程,子进程的 PID 为 {pid}")
pid, status = os.wait()
if os.WIFEXITED(status):
print(f"子进程 {pid} 正常结束,退出状态码为 {os.WEXITSTATUS(status)}")
elif os.WIFSIGNALED(status):
print(f"子进程 {pid} 被信号结束,信号编号为 {os.WTERMSIG(status)}")
输出:
这是父进程,子进程的 PID 为 34514
这是子进程
子进程 34514 正常结束,退出状态码为 0
在上面的示例中,首先使用 os.fork() 方法创建了一个子进程,然后父进程使用 os.wait() 等待子进程结束。当子进程结束时,os.wait() 方法会返回子进程的 PID 和状态码。父进程可以使用 os.WIFEXITED(status) 和 os.WEXITSTATUS(status) 方法判断子进程是否正常结束以及退出状态码。