Python os.WCOREDUMP() - 检查该进程是否生成了核心转储

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程