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.WCOREDUMP()
method in Python is used to check whether a core dump was generated for the process. This method takes process status code as returned by os.wait()
, os.system()
or os.waitpid()
method as a parameter.
Syntax: os.WCOREDUMP(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’. True is returned if core dump was generated for the process, otherwise returns False.
Code #1: Use of os.WCOREDUMP()
method
# Python program to explain os.WCOREDUMP() 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
# child's 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 if core dump was
# generated for the child process
core_dump = os.WCOREDUMP(info[ 1 ])
print ( "Was core dump generated?" , core_dump)
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
# and will produce core dump.
os.abort()
|
In Child process Process ID: 15059 Hello! Geeks In parent process Was core dump generated? True
Code #2: Use of os.WCOREDUMP()
method
# Python program to explain os.WCOREDUMP() 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 :
# 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 )
# Wait for the completion of
# second child process and get
# its pid and exit status indication
# using os.waitpid() method
child2_info = os.waitpid(pid2, 0 )
# child_info is a tuple, where
# child_info[0] represents child's id
# child_info[1] represents exit status code
print ( "\nIn parent process" )
# Check if core dump was
# generated for the
# first child process
core_dump = os.WCOREDUMP(child1_info[ 1 ])
print ( "Was core dump generated for first child process?" )
print (core_dump)
# Check if core dump was
# generated for the
# first child process
core_dump = os.WCOREDUMP(child2_info[ 1 ])
print ( "\nWas core dump generated for second child process?" )
print (core_dump)
else :
print ( "\nIn second child process" )
print ( "Process id:" , os.getpid())
print ( "Hey ! there" )
print ( "Exiting" )
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
# and will produce core dump.
os.abort()
|
In first child process Process ID: 16289 Hello! Geeks In second child process Process id: 16290 Hey! there Exiting In parent process Was core dump generated for first child process? True Was core dump generated for second child process? False
References: https://docs.python.org/3/library/os.html#os.WCOREDUMP