【Linux杂货铺】进程信号
在Linux系统中,进程可以处理一系列的信号,这些信号可以由内核产生,也可以由其他进程产生。下面是一些常见的信号以及它们的含义:
- SIGHUP:挂断信号,通常由终端断开或控制进程终止产生。
- SIGINT:中断信号,通常由用户按下
Ctrl+C
产生。 - SIGQUIT:退出信号,通常由用户按下
Ctrl+\
产生。 - SIGKILL:杀死信号,不能被处理或忽略,通常用于立即结束进程。
- SIGTERM:结束信号,默认用于请求结束进程。
- SIGSTOP:停止信号,通常由
Ctrl+Z
产生,进程会停止执行,但不会结束。
在Python中,可以使用os
和signal
模块来处理和发送信号。
例如,以下代码展示了如何捕获并处理SIGINT
信号:
import signal
import os
import time
def handle_sigint(signum, frame):
print('Received SIGINT. Exiting gracefully.')
exit(0)
# 注册信号处理函数
signal.signal(signal.SIGINT, handle_sigint)
print('Registered SIGINT handler. Waiting for signal...')
# 进入一个无限循环,以避免进程立即退出
while True:
time.sleep(1)
在上面的代码中,我们定义了一个handle_sigint
函数来处理SIGINT
信号,并且使用signal.signal()
函数将其注册为信号处理函数。程序会一直等待SIGINT
信号的到来,当信号到达时,会调用handle_sigint
函数来处理信号。
另外,你也可以使用os.kill()
函数来发送信号给其他进程:
os.kill(other_process_id, signal.SIGTERM)
这行代码会发送一个SIGTERM
信号给进程ID为other_process_id
的进程,请求其正常结束运行。
评论已关闭