Как мне поймать сигнал KILL или HUP или User Abort?

У меня есть сценарий, работающий на фоне моего linux-сервера, и я хотел бы поймать сигналы, такие как перезагрузка или что-либо, что убило бы этот сценарий, и вместо этого сохранить любую важную информацию перед фактическим выходом.

Я думаю, что большинство из того, что мне нужно перехватить, это SIGINT, SIGTERM, SIGHUP, SIGKILL.

Как поймать любой из этих сигналов и заставить его выполнить функцию выхода, иначе он продолжит выполнять то, что делал?

псевдо perl код:

#!/usr/bin/perl

use stricts;
use warnings;

while (true)
{
    #my happy code is running
    #my happy code will sleep for a few until its breath is back to keep running.
}

#ops I have detected an evil force trying to kill me
#let's call the safe exit.
sub safe_exit() 
{
    # save stuff
    exit(1);
}

псевдо php код:

<?php

while (1)
{
    #my happy code is running
    #my happy code will sleep for a few until its breath is back to keep running.
}

#ops I have detected an evil force trying to kill me
#let's call the safe exit.

function safe_exit()
{
    # save stuff
    exit(1);
}
?>
9
задан Prix 23 October 2011 в 04:29
поделиться