Python os.WEXITSTATUS() 函数
Python的os.WEXITSTATUS()函数是一个常用的函数,其主要作用是获取子进程返回的状态码。该函数接受的参数是包含子进程退出信息的内容。
子进程退出状态是通过getstatusoutput()或getoutput()(或者其他返回命令返回值的函数,例如 Popen.wait())获得的,该函数通常由父进程使用。该函数返回的只是退出状态码以表示进程是否正常终止。
语法:
os.WEXITSTATUS(status)
注意:
在unix系统下,状态总是由八位比特表示,其中八位中的一位表示进程是否被信号杀死(如果是这样,除了跟在状态码后面的低七位之外,还将设置该位),另外低七位表示进程退出时的状态码。因此,通常通过对状态值进行位操作获得状态码。
例子:
import os
# 创建子进程
pid = os.fork()
if pid == 0:
os._exit(100)
else:
# 等待子进程,获取退出状态信息
# WIFEXITED,WEXITSTATUS 以及 os.WEXITSTATUS() 是用来判断和处理子进程退出状态码的。
# WIFEXITED(status)函数返回 True,如果子进程正常退出 返回状态码,并且该状态码不是一个信号值。
# os.WEXITSTATUS(status)返回一个整数,表示进程以某种方式退出,其中 0-255 之间的任何值可以用作状态值。
# WEXITSTATUS(status)函数返回这个整数,表示进程以这个状态码退出。
wstatus = os.waitpid(pid, 0)[1]
if os.WIFEXITED(wstatus):
print("Exited, status:", os.WEXITSTATUS(wstatus))
运行结果为 “Exited, status: 100” 表示该子进程以状态码100退出。
参考文献: