Python检查强制关闭

T90*_*T90 5 python python-2.7

假设我在终端窗口中运行了一个python文件'program.py'.当手动终止运行它的窗口时,我需要该程序将类似"强制关闭"的内容记录到文件中.我已经读过程序发送的状态代码为-1,表示执行不成功,但是如何根据它读取和执行某些操作?

fre*_*ish 5

你不能.进程无法读取自己的退出代码.这没有多大意义.但是为了强制进程关闭,操作系统必须向该进程发送信号.只要它不是SIGKILL和/或SIGSTOP,那么你可以通过信号库拦截它.SIGKILL和SIGSTOP不能被阻止,例如,如果某人有,kill -9那么你无能为力.

要使用信号库:

import signal
import sys

def handler(signum, frame):
    # do the cleaning if necessary

    # log your data here
    with open('log.log', 'a') as fo:
        fo.write('Force quit on %s.\n' % signum)

    # force quit
    sys.exit(1)  # only 0 means "ok"

signal.signal(signal.SIGINT, handler)
signal.signal(signal.SIGHUP, handler)
signal.signal(signal.SIGTERM, handler)
Run Code Online (Sandbox Code Playgroud)

当终端关闭时,它会向进程发送SIGHUP.

SIGINT用于CTRL-C中断.

SIGTERM与SIGKILL类似.不同之处在于该过程可以捕获它.这是一场"优雅的杀戮".

重要提示:所有POSIX系统都适用.我对其他操作系统了解不多.