Python os.WEXITSTATUS() 方法详解

  • Post category:Python

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退出。

参考文献: