Open In App

Python | os.waitid() method

Last Updated : 26 Aug, 2019
Improve
Improve
Like Article
Like
Save
Share
Report

OS module in Python provides functions for interacting with the operating system. OS comes under Python’s standard utility modules. This module provides a portable way of using operating system dependent functionality.

os.waitid() method in Python is used by a process to wait for completion of one or more child processes.

Syntax: os.waitid(idtype, id, options)

Parameters:
id: An integer value representing the process id of child to wait on.
idtype: The idtype and id parameter specify which child the method waits for.

Return type: This method returns an object which represents the data contained in siginfo_t structure.

Code #1: Use of os.waitid() method




# Python program to explain os.waitid() method 
  
# importing os module  
import os 
  
# Create a child process
# using os.fork() method 
pid = os.fork()
  
  
# a Non-zero process id (pid)
# indicates the parent process 
if pid :
      
    # Wait for the completion of
    # child process using
    # os.waitid() method
  
    # Specify idtype
    idtype = os.P_PID
  
    # Specify id
    id = pid
      
    # Specify option
    option = os.WEXITED
  
    status = os.waitid(idtype, id, option)
  
    print("\nIn parent process-")
      
    # Print status
    print("Status of child process:")
    print(status)
  
  
else :
    print("In Child process-")
    print("Process ID:", os.getpid())
    print("Hello ! Geeks")
    print("Exiting..")
     


Output:

In Child process-
Process ID: 10309
Hello! Geeks
Exiting..

In parent process-
Status of child process:
posix.waitid_result(si_pid=10309, si_uid=1000, si_signo=17, si_status=0, si_code=1)

Code #2: Use of os.waitid() method




# Python program to explain os.waitid() method 
  
# importing os module  
import os 
  
# Create a child process
# using os.fork() method 
pid = os.fork()
  
  
# a Non-zero process id (pid)
# indicates the parent process 
if pid :
      
    # Create one more child process 
    pid2 = os.fork()
      
    if pid2 :
      
        # Wait for the completion of
        # any child processes using
        # os.waitid() method
  
        # Specify idtype
        idtype = os.P_ALL
  
        # Specify id
        # As idtype is os.P_ALL
                # method will wait for 
        # any children and specified id 
        # is ignored.             
        id = pid
  
        # Specify option
        option = os.WSTOPPED | os.WEXITED
      
        status = os.waitid(idtype, id, option)
  
        print("\nIn parent process-")
          
        # Print status
        print("Status of completed child process:")
        print(status)
  
    else :
        print("\nIn Second Child process-")
        print("Process ID:", os.getpid())
        print("Hey ! There  ")
        print("Exiting")
  
  
else :
    print("In First Child process-")
    print("Process ID:", os.getpid())
    print("Hello ! Geeks")
    print("Exiting")
     


Output:

In First Child process-
Process ID: 11524
Hello! Geeks
Exiting

In Second Child process-
Process ID: 11525
Hey! There  
Exiting

In parent process-
Status of completed child process:
posix.waitid_result(si_pid=11524, si_uid=1000, si_signo=17, si_status=0, si_code=1)

References:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads