欢迎访问宙启技术站
智能推送

通过Python的Signal()函数实现对系统中断信号的处理

发布时间:2023-12-16 05:02:12

在Python中,我们可以使用signal模块提供的signal()函数来实现对系统中断信号的处理。通过这个函数,我们可以注册自定义的信号处理函数来处理收到的信号。

下面是一个使用signal()函数实现对系统中断信号的处理的例子:

import signal
import time

def signal_handler(sig, frame):
    print("Received signal:", sig)
    print("Exiting...")
    exit(0)

# 注册信号处理函数
signal.signal(signal.SIGINT, signal_handler)

print("Press Ctrl + C to exit...")
while True:
    # 模拟长时间运行的程序
    time.sleep(1)

在这个例子中,我们首先定义了一个信号处理函数signal_handler(),它接受两个参数:sig表示接收到的信号编号,frame表示当前的栈帧。

然后,我们使用signal.signal()函数将SIGINT中断信号与我们定义的信号处理函数signal_handler()进行关联,以便在收到中断信号时调用该函数。

接下来,我们使用一个无限循环来模拟一个长时间运行的程序。在每次循环中,我们使用time.sleep(1)函数让程序暂停1秒,以模拟一些耗时操作。

当我们运行这个脚本时,它会不断输出“Press Ctrl + C to exit...”,并等待接收中断信号。如果我们按下Ctrl + C键,它将收到一个中断信号,并调用我们定义的信号处理函数。在信号处理函数中,我们打印出接收到的信号编号,并退出程序。

这个例子演示了如何使用signal()函数实现对系统中断信号的处理,并在收到信号时执行一些特定的操作。你也可以自定义更多的信号处理函数来处理其他的信号,例如SIGTERMSIGQUIT等。

除了signal()函数,还有其他一些与信号相关的函数可供使用,比如signal.getsignal()可以获取某个信号的处理函数,signal.pause()可以暂停程序直到接收到一个信号。具体的用法可以参考Python官方文档。