📜  Python| os.WCOREDUMP() 方法

📅  最后修改于: 2022-05-13 01:55:14.120000             🧑  作者: Mango

Python| os.WCOREDUMP() 方法

Python中的OS 模块提供了与操作系统交互的功能。操作系统属于 Python 的标准实用程序模块。该模块提供了一种使用操作系统相关功能的可移植方式。

Python中的os.WCOREDUMP()方法用于检查是否为进程生成了核心转储。该方法将os.wait()os.system()os.waitpid()方法返回的进程状态码作为参数。

代码 #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

代码 #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

参考资料: https://docs。 Python.org/3/library/os.html#os.WCOREDUMP