PDA

View Full Version : [C] Terminazione con SIGKILL


Ed_Bunker
09-02-2005, 10:09
Ciao, come posso sapere se un processo e' terminato a causa di un SIGKILL ? Inoltre in quali circostanze il s.o. termina un'applicazione/processo inviandole/gli un SIGKILL ?

Ciauz

ilsensine
09-02-2005, 11:31
Lo puņ sapere solo l'eventuale parent del processo, esaminando quanto riportato da waitpid.
Il sistema normalmente non invia sigkill; lo fa solo nell'improbabile caso che il programma generi un kernel oops. Puņ accadere anche se la console da cui lanci il programma viene terminata; in questo caso, basta che avvii il programma tramite setsid. In generale, se il padre termina muoiono anche i figli, non so se tramite sigkill o altri segnali.

Ed_Bunker
09-02-2005, 12:31
Originariamente inviato da ilsensine
Lo puņ sapere solo l'eventuale parent del processo, esaminando quanto riportato da waitpid.
Il sistema normalmente non invia sigkill; lo fa solo nell'improbabile caso che il programma generi un kernel oops. Puņ accadere anche se la console da cui lanci il programma viene terminata; in questo caso, basta che avvii il programma tramite setsid. In generale, se il padre termina muoiono anche i figli, non so se tramite sigkill o altri segnali.
Il processo che viene interrotto inaspettatamente e' il processo padre. Questo genera diversi figli durante l'esecuzione e ad un certo punto viene restituito e viene restituito il prompt della shell (Salvo poi le stampe su STDOUT dei processi figli...). Credevo che in seguito ad una chiamata di sistema errata il kernel potesse anche killare un processo o con SIGKILL o con SIGTERM.