Python os.WCOREDUMP()方法
Python中的os.WCOREDUMP()方法用于检查该进程是否生成了核心转储。这个方法接受os.wait()、os.system()或os.waitpid()方法返回的进程状态码作为参数。
os.WCOREDUMP 语法
os.WCOREDUMP(status)
os.WCOREDUMP 参数
status:该参数接受进程状态码(一个整数值),由os.system(),os.wait()或os.waitpid()方法返回。
返回类型:该方法返回一个布尔值,类为’bool’。如果为该进程生成了核心转储,则返回True,否则返回False。
os.WCOREDUMP 示例1
使用os.WCOREDUMP()方法
# 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
os.WCOREDUMP 示例2
使用os.WCOREDUMP()方法
# 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