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() |
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" ) |
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