程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

请介绍一下Python中的信号和信号处理函数。

hfteth 2025-07-23 14:13:01 技术文章 3 ℃

在 Python 中,信号是操作系统向进程发送的一种通知,用于指示发生了某种事件。例如,当用户按下 Ctrl+C 组合键时,操作系统会向进程发送一个 SIGINT 信号,用于通知进程中断。Python 提供了 signal 模块来处理信号,包括注册信号处理函数、发送信号等功能。

下面是一些常用的信号和对应的含义:

  • SIGINT:键盘中断信号,通常由用户按下 Ctrl+C 触发。
  • SIGTERM:终止信号,用于请求进程正常终止。
  • SIGKILL:强制终止信号,用于立即终止进程。
  • SIGHUP:挂起信号,通常用于通知进程重新加载配置文件。
  • SIGUSR1 和 SIGUSR2:用户自定义信号,可以用于应用程序内部通信等。

Python 中的信号处理主要通过 signal 模块来实现,其中常用的函数包括:

  • signal.signal(signalnum, handler):用于注册信号处理函数。signalnum 是信号编号,handler 是信号处理函数。
  • signal.getsignal(signalnum):用于获取当前信号的处理函数。
  • signal.pause():挂起进程,直到收到一个信号。
  • signal.alarm(seconds):设置闹钟定时器,当指定的时间过去后,会发送 SIGALRM 信号给进程。

以下是一个简单的示例,演示了如何使用 signal 模块来处理 SIGINT 信号:

import signal
import sys

def sigint_handler(signum, frame):
    print("Received SIGINT signal. Exiting...")
    sys.exit(0)

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

print("Waiting for SIGINT signal...")
signal.pause()

在这个示例中,我们首先定义了一个名为 sigint_handler 的信号处理函数,用于处理 SIGINT 信号。然后,我们使用 signal.signal() 函数注册了 SIGINT 信号处理函数。最后,我们调用 signal.pause() 函数挂起进程,直到收到 SIGINT 信号。

Tags:

最近发表
标签列表