Python os.WIFSIGNALED() 方法
Python os.WIFSIGNALED() 方法用于检查进程是否因任何信号而退出。该方法以os.wait()、os.system()或os.waitpid()方法返回的进程状态代码为参数,如果进程因信号而退出,则返回True,否则返回False。
os.WIFSIGNALED 语法
os.WIFSIGNALED(status)
os.WIFSIGNALED(status) 参数
status:该参数接受进程状态码(一个整数值),由os.system(),os.wait()或os.waitpid()方法返回。
返回类型:该方法返回一个布尔值,类为’bool’。如果进程因信号而退出,此方法返回True,否则返回False。
os.WIFSIGNALED(status) 示例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
os.WIFSIGNALED(status) 示例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
# represents 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