Linux之进程信号
在Linux系统中,进程可以处理一系列的信号,这些信号由系统产生,并可以由其他进程(通过kill函数)产生。
以下是一些常见的信号:
- SIGHUP:当终端断开时,用户会话进程会收到这个信号。
- SIGINT:当用户按下Ctrl+C时,产生这个信号,通常终止程序。
- SIGKILL:无法被处理或忽略,通常用于强制终止进程。
- SIGTERM:程序结束(terminate)信号,默认情况下会终止进程。
- SIGSTOP:进程暂停,与SIGKILL不同,可以被处理或忽略。
在Python中,可以使用signal
模块来处理和发送信号。
例如,捕获并处理SIGINT信号:
import signal
import time
def handle_sigint(sig, frame):
print('You pressed Ctrl+C!')
exit(0)
signal.signal(signal.SIGINT, handle_sigint)
print('Press Ctrl+C to exit.')
while True:
time.sleep(1)
在上面的代码中,我们使用signal.signal
函数来设置SIGINT信号的处理函数handle_sigint
。当用户按下Ctrl+C时,会触发这个函数,打印相应的消息并退出程序。
另外,你也可以使用os
模块发送信号:
import os
# 发送SIGTERM信号给指定PID的进程
os.kill(1234, signal.SIGTERM)
在这个例子中,我们使用os.kill
函数发送SIGTERM信号给进程ID为1234的进程,导致其终止。
评论已关闭