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

Python中的signal()函数及其用法

发布时间:2023-12-28 07:23:44

在Python中,signal()函数用于捕获和处理信号。信号是操作系统发送给进程的通知,例如键盘输入、异常发生等。signal()函数允许我们定义信号处理程序,在接收到指定信号时执行特定的操作。

signal()函数的语法如下:

signal.signal(signalnum, handler)

其中,signalnum是要捕获的信号编号,可以是预定义的信号常量或整数值。handler是一个回调函数,用于处理信号。

让我们以一个示例来说明signal()函数的用法。

import signal
import time

# 定义信号处理函数
def handler(signum, frame):
    if signum == signal.SIGINT:
        print("接收到SIGINT信号")
    elif signum == signal.SIGTSTP:
        print("接收到SIGTSTP信号")

# 注册信号处理程序
signal.signal(signal.SIGINT, handler)
signal.signal(signal.SIGTSTP, handler)

print("等待信号...")
while True:
    time.sleep(1)

上面的代码定义了一个handler函数,用于处理SIGINTSIGTSTP两个信号。SIGINT是键盘输入信号,即按下Ctrl+C时发送的信号;SIGTSTP是挂起(暂停)进程的信号,即按下Ctrl+Z时发送的信号。

然后,我们使用signal.signal()函数将handler函数注册为信号处理程序,分别捕获SIGINTSIGTSTP信号。

最后,我们进入一个无限循环,每隔1秒钟打印一条消息。当接收到信号时,handler函数会被调用,并根据不同的信号类型打印不同的消息。

通过运行上面的代码,我们可以在控制台上看到如下输出:

等待信号...

然后,我们可以按下Ctrl+C触发SIGINT信号,控制台会输出:

接收到SIGINT信号

或者按下Ctrl+Z触发SIGTSTP信号,控制台会输出:

接收到SIGTSTP信号

这样,我们就成功使用signal()函数捕获和处理了信号,并根据信号类型执行相应的操作。