У меня есть требование записать в файл журнала при получении любой команды завершения, такой как SIGTERM AND SIGKILL.Обработчик сигнала SIGKILL
Я могу зарегистрироваться для SIGTERM, но как может обрабатывать сигнал SIGKILL?
У меня есть требование записать в файл журнала при получении любой команды завершения, такой как SIGTERM AND SIGKILL.Обработчик сигнала SIGKILL
Я могу зарегистрироваться для SIGTERM, но как может обрабатывать сигнал SIGKILL?
Вы не можете, по крайней мере, не для того, чтобы процесс был убит.
Что вы можете сделать, чтобы родительский процесс следил за смертью детского процесса и действовал соответствующим образом. Любая подходящая система надзора за процессом, такая как daemontools, имеет такой объект.
Использование родительского процесса проще всего, но не требуется. Любой процесс, который удерживает другой конец трубы или fifo, будет уведомлен, когда его сверстник будет убит. –
@Ben: Труба может быть закрыта с помощью других средств, кроме смерти процесса, и поэтому не столь надежна. Но если вы не контролируете родительский процесс, это может быть единственный вариант, который у вас есть. (у daemontools есть программа 'fghack', которая работает на этой предпосылке.) –
предлагается прочитать: [Попытка обработки SIGKILL] (http://stackoverflow.com/questions/3689403/how-do-i-send- a-signal-to-perl-on-windows) –
Возможный дубликат [Как изящно обрабатывать сигнал SIGKILL] (http://stackoverflow.com/questions/2541597/how-to-gracefully-handle-the-sigkill- signal-in-java) –
@Ben Voigt: Я не хочу отмечать это как дубликат «Как изящно обрабатывать сигнал SIGKILL», поскольку этот вопрос содержит дезинформацию, предполагающую, что Control-C посылает сигнал KILL, когда на самом деле это посылает сигнал INTR. – Omnifarious