Open In App

Python | os.WIFSIGNALED() method

Last Updated : 02 Jul, 2021
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.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  

Python3




# 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 

Python3




# 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
 



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads