📜  Python| os.waitid() 方法(1)

📅  最后修改于: 2023-12-03 15:04:21.571000             🧑  作者: Mango

Python | os.waitid() 方法

os.waitid() 方法用于等待进程结束并返回有关其状态的信息。

语法

os.waitid(idtype, id, options=0, (ru_pid, ru_status, timeval)=None)

参数
  • idtype (int) :表示等待的进程ID的类型。该参数可以为以下值之一:
    • P_PID (0) :表示等待具有进程ID(id)的进程。在这种情况下,id参数包含要等待的进程的PID。
    • P_PGID (1) :表示等待与进程组ID(id)相关联的进程。在这种情况下,id参数包含要等待的进程组的ID。
    • P_ALL (-1) :表示等待任何子进程。在这种情况下,id参数被忽略。
  • id (int) :表示进程ID或进程组ID,具体取决于idtype参数的值。
  • options (int) :表示等待进程的选项。这可以是以下值的一种或多种的有效位掩码:
    • WCONTINUED (8) :如果进程暂停并已经在某些操作系统上恢复,则返回。
    • WEXITED (4) :如果已退出进程,则返回。
    • WNOHANG (1) :如果没有可以等待的进程,则立即返回。
    • WNOWAIT (0x80000000) :只等待指定的进程,并不要将状态传递给父进程。
    • WSTOPPED (2) :如果进程暂停,则返回。
  • (ru_pid, ru_status, timeval) (tuple) :一个元祖,包含以下变量:
    • ru_pid :返回进程的ID。
    • ru_status :返回进程的退出状态。
    • timeval (tuple) :返回进程死亡的时间(使用时钟时间表示)。
返回值

该方法返回有关已等待进程的状态的信息。如果options参数为WNOHANG,则该方法在无可用进程可等待时立即返回。在其他情况下,该方法将一直阻塞,直到有进程可等待时为止。

示例
# Python program to explain os.waitid()
import os
import time

def child():
    for i in range(2):
        print("I am child {}".format(os.getpid()))
        time.sleep(1)

def main():
    pid = os.fork()
    if pid == 0:
        child()
    else:
        print("I am parent {}".format(os.getpid()))
        os.waitid(os.P_PID, pid, os.WEXITED)

if __name__ == '__main__':
    main()
输出
I am parent 4693
I am child 4694
I am child 4694