我认为关闭终端窗口(或嵌入在IDE中的终端窗口)会向终端中运行的进程发送某种OS中断信号。我怎样才能知道这个信号是什么?我正在寻找一种方法来捕获中断,运行一些清理,然后中止。我正在使用Python和Windows。
答案 0 :(得分:3)
您正在寻找SIGHUP
SIGHUP 当SIGHUP信号的控制终端关闭时,SIGHUP信号被发送到进程。它最初旨在通知该过程 串行线丢弃(挂断)在现代系统中,这个信号 通常意味着控制伪或虚拟终端已经 封闭。[3]许多守护进程将重新加载其配置文件和 收到这个时,重新打开他们的日志文件,而不是退出 信号。[4] nohup是一个使命令忽略信号的命令。
答案 1 :(得分:0)
对于这种情况,Python似乎没有例外。最接近的是SystemExit
,但实际上并没有捕获您正在寻找的中断。
在关闭终端时,Windows似乎实际上在发送进程之前发送了Ctrl + C,但捕获KeyboardInterrupt
似乎也无法正常工作。此时,您可能需要查看signal
模块。