當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python os.WIFSIGNALED()用法及代碼示例


Python中的OS模塊提供了與操作係統進行交互的函數。操作係統屬於Python的標準實用程序模塊。該模塊提供了使用依賴於操作係統的函數的便攜式方法。

os.WIFSIGNALED()Python中的方法用於檢查進程是否由於任何信號而退出。此方法采用流程狀態代碼,由os.wait()os.system()或者os.waitpid()方法作為參數,如果進程由於信號而退出,則返回True,否則返回False。

用法: os.WIFSIGNALED(status)

參數:
status:此參數采用os.system(),os.wait()方法或os.waitpid()方法返回的過程狀態代碼(整數值)。

返回類型:此方法返回“布爾”類的布爾值。如果進程由於信號而退出,則此方法返回True,否則返回False。

代碼1:用於os.WIFSIGNALED()方法

# 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

代碼2:用於os.WIFSIGNALED()方法

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

參考文獻: https://docs.python.org/3/library/os.html#os.WIFSIGNALED



相關用法


注:本文由純淨天空篩選整理自ihritik大神的英文原創作品 Python | os.WIFSIGNALED() method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。