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