Ho il requisito di scrivere su un file di registro alla ricezione di qualsiasi comando di terminazione come SIGTERM E SIGKILL.Gestore segnale SIGKILL
Posso registrarmi a SIGTERM ma come gestire il segnale SIGKILL?
Ho il requisito di scrivere su un file di registro alla ricezione di qualsiasi comando di terminazione come SIGTERM E SIGKILL.Gestore segnale SIGKILL
Posso registrarmi a SIGTERM ma come gestire il segnale SIGKILL?
Non è possibile, almeno non per il processo di essere ucciso.
Cosa si può fare è organizzare per il processo padre di guardare per la morte del processo figlio e agire di conseguenza. Qualsiasi sistema di supervisione del processo decente, come ad esempio daemontools, ha una tale struttura integrata.
L'utilizzo del processo principale è più semplice, ma non richiesto. Qualsiasi processo che trattiene l'altra estremità di una pipe o di una fifo verrà avvisato quando il suo peer viene ucciso. –
@ Ben: la pipe può essere chiusa con altri mezzi oltre alla morte del processo e quindi non è altrettanto affidabile. Ma se non controlli il processo genitore, quella potrebbe essere l'unica opzione che hai. (daemontools ha un programma 'fghack' che funziona su quella premessa.) –
lettura suggerita: [Tentativo di gestire SIGKILL] (http://stackoverflow.com/questions/3689403/how-do-i-send- a-signal-to-perl-on-windows) –
possibile duplicato di [Come gestire con garbo il segnale SIGKILL] (http://stackoverflow.com/questions/2541597/how-to-gracefully-handle-the-sigkill- signal-in-java) –
@Ben Voigt: Sono riluttante a contrassegnare questo come un duplicato del "Come gestire con garbo il segnale SIGKILL" in quanto la domanda contiene informazioni errate che suggeriscono che il Control-C invia un segnale KILL quando in realtà invia un segnale INTR. – Omnifarious