Open In App

Python | os.WIFSIGNALED() method

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.WIFSIGNALED() method in Python is used to check whether a process exited due to any signal. This method takes process status code as returned by os.wait(), os.system() or os.waitpid() method as a parameter and returns True if the process exited due to a signal, otherwise returns False.



Syntax: os.WIFSIGNALED(status)
Parameters: 
status: This parameter takes process status code (an integer value) as returned by os.system(), os.wait() or os.waitpid() method. 
Return type: This method returns a boolean value of class ‘bool’. This method returns True if process exited due to a signal, otherwise returns False. 
 

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






# Python program to explain os.WIFSIGNALED() method
 
# importing os module 
import os
 
# Create a child process
# using os.fork() method
pid = os.fork()
 
 
# pid greater than 0
# indicates the parent process
if pid :
     
    # Wait for the completion of
    # the child process and get
    # its pid and
    # exit status indication
    info = os.wait()   
 
    # info is a tuple
    # info[0] represents child's id
    # info[1] represents exit status code
 
    print("\nIn parent process")
     
    # Check whether the child process
    # exited due to a signal
    # using os.WIFSIGNALED() method
    signaled = os.WIFSIGNALED(info[1])
 
    print("Child process exited due a signal?")
    print(signaled)
 
 
else :
    print("In Child process")
    print("Process ID:", os.getpid())
    print("Hello ! Geeks")
     
    # os.abort() method will
    # generate a SIGABRT signal
    # to the current process
    os.abort()

Output: 
In Child process
Process ID: 10224
Hello! Geeks

In parent process
Child process exited due a signal?
True

 

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




# Python program to explain os.WIFSIGNALED() method
 
# importing os and signal module 
import os, signal
 
# Create a child process
# using os.fork() method
pid = os.fork()
 
 
# pid greater than 0
# indicates the parent process
if pid :
     
    # Create one more child
    pid2 = os.fork()
 
    if pid2 :
     
 
        # Wait for the completion of
        # first child process and get
        # its pid and
        # exit status indication
        # using os.waitpid() method
        child1_info = os.waitpid(pid, 0)
 
        # Send signal 'SIGKILL' to
        # second child process
        # using os.kill() method
        # and get its pid and
        # exit status code
        # using os.waitpid() method
        os.kill(pid2, signal.SIGKILL)
        child2_info = os.waitpid(pid2, 0)   
                 
        # os.waitpid() method
        # returns a tuple which
        # represents child's pid
        # and exit status code
 
        print("\nIn parent process")
 
        # Check whether the first child
        # process exited due a signal
        # using os.WIFSIGNALED() method
        isSignaled = os.WIFSIGNALED(child1_info[1])
         
        print("First child process exited due to a signal?")
        print(isSignaled)
 
        # Check whether the second child
        # process exited due a signal
        # using os.WIFSIGNALED() method
        isSignaled = os.WIFSIGNALED(child2_info[1])
 
        print("Second child process exited due to a signal?")
        print(isSignaled)
     
 
    else :
        print("\nIn second child process")
        print("Process id:", os.getpid())
        print("Hey ! there")
        while True :
            print("Waiting for signal..")
 
else :
    print("In first child process")
    print("Process ID:", os.getpid())
    print("Hello ! Geeks")
    print("Exiting")

Output: 
In First child process
Process ID: 3752
Hello! Geeks

In second child process
Process id: 3753
Hey! there
Waiting for signal..
Waiting for signal..
Waiting for signal..
Waiting for signal..
Waiting for signal..

In parent process
First child process exited due to a signal?
False
Second child process exited due to a signal?
True

 

References: https://docs.python.org/3/library/os.html#os.WIFSIGNALED
 


Article Tags :