Skip to content
Related Articles

Related Articles

Improve Article

Python | os.waitid() method

  • Last Updated : 26 Aug, 2019

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:

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :