как в python поймать сигнал kill -9 и выполнить функцию?

Можно ли поймать сигнал kill -9 и при его получении сначала вызвать функцию?

import os
import sys
import signal

def sig_handler(signall, frame, path):
        os.remove(path)
        sys.exit(0)

Ответы (3 шт):

Автор решения: Антон
import sys
import signal

def sig_handler(signall, frame, path):
        os.remove(path)
        sys.exit(0)
sig_handler ('kill-9','sd','users.txt')

И оцените мой комментарий этот!

→ Ссылка
Автор решения: AivanF.

Поймать сигнал 9 невозможно, на то он и kill, принудительное и незамедлительное завершение процесса. Но можно поймать сигнал 2 (interrupt, вызывается командой Ctrl+C) или 15 (terminate, graceful kill, из консоли kill <pid> без -9), для этого нужно просто зарегистрировать Ваш функцию:

import signal
import time

# Первым аргументом будет число – код сигнала
# Вторым аргументом идёт фрейм, о них читайте в документации
def fun(signum, frame):
    print(signum, frame)

# Подписываемся на обработку конкретных сигналов:
signal.signal(signal.SIGINT, fun)
signal.signal(signal.SIGTERM, fun)

# Чтобы было, что убивать:
while True:
    print(int(time.time()) % 1000)
    time.sleep(3)
→ Ссылка
Автор решения: Андрей

Спасибо alvanf за подсказку, я вроде придумал как запихнуть path.

import os
import sys
from signal import signal, SIGINT, SIGTERM
from functools import partial
from time import sleep

def sig_handler(signall, frame, path):
    os.remove(path)
    sys.exit(0)


signal(SIGINT, partial(sig_handler,'/any/path/to/file'))
signal(SIGTERM, partial(sig_handler,'/any/path/to/file'))


sleep(100) ##чтобы отловить и убить через kill или ctrl+c
→ Ссылка