使用Ctrl+C终止程序时是否可以做一些别的操作?

48 30天之前 操作系统 进程

答案

可以。 当我们在键盘按下Ctrl+C组合键时,系统向当前终端运行的程序发送名为 SIGINT,值为2的中断信号。 默认情况下,程序收到 SIGINT 信号后会直接退出程序。 如果我们为 SIGINT 信号处理器自定义一个处理方法,那程序就会执行这个方法后再退出。 如下是Python示例代码:

# coding: utf-8

import time
import signal
import sys


def signal_handler(sig, frame):
    print("You pressed Ctrl+C")
    time.sleep(3)       # 按下Ctrl+C后程序等待3秒钟再退出
    sys.exit(0)         # 退出程序,如果不写这一行,程序也会退出


signal.signal(signal.SIGINT, signal_handler)    # 为SIGINT自定义一个处理方法
signal.pause()

这里的信号是操作系统进程间通信的方式之一。