Python中signal()函数的高级用法
发布时间:2023-12-28 07:24:20
signal()函数是Python中处理信号的函数,它允许我们在程序运行过程中捕获和处理各种系统信号。
signal.signal(signalnum, handler)函数用于设置信号处理函数,其中signalnum是要设置的信号编号,handler是信号处理函数。
以下是signal()函数的高级用法与使用例子:
1. 捕获和处理信号
import signal
import sys
def signal_handler(signal, frame):
print('Caught signal')
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
在这个例子中,我们定义了一个信号处理函数signal_handler(),当接收到SIGINT或SIGTERM信号时,会打印"Caught signal"并退出程序。
2. 忽略信号
import signal
def do_nothing(signal, frame):
pass
signal.signal(signal.SIGINT, signal.SIG_IGN)
# 继续执行其他操作,不会被SIGINT信号打断
在这个例子中,我们将SIGINT信号设置为忽略。当程序接收到SIGINT信号时,不会中断程序执行。
3. 设置信号处理函数为默认行为
import signal signal.signal(signal.SIGINT, signal.SIG_DFL)
在这个例子中,我们将SIGINT信号的处理函数设置为默认行为。当程序接收到SIGINT信号时,会使用系统默认的行为处理信号。
4. 发送信号
import os
import signal
pid = os.fork()
# 子进程
if pid == 0:
print('Child process')
# 发送SIGTERM信号给父进程
os.kill(os.getppid(), signal.SIGTERM)
else:
print('Parent process')
# 等待接收信号
signal.pause()
在这个例子中,我们通过fork()函数创建了一个子进程。子进程会发送SIGTERM信号给父进程,父进程等待接收信号。
这些是signal()函数的一些高级用法与使用例子。通过使用signal()函数,我们可以处理各种信号,实现灵活的信号处理机制。
