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
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



