2009-09-29 15 views

risposta

16

È necessario rendere i processi secondari demoniaci per farli uccidere quando il padre viene ucciso (o muore), altrimenti vengono adottati da init (1).

+1

Ecco un link a come per creare un processo di zombi se sei interessato a come vengono creati e a sperimentare come vengono gestiti per il tuo sistema: http://www.unix.com/unix-dummies-questions-answers/100737-how- do-you-create-zombie-process.html – Klathzazt

+4

processi demonici, padre, genitore, figlio e zombi. I computer raccontano una storia così divertente e stravagante. – jwarner112

23

No, i processi figli non vengono necessariamente uccisi quando il genitore viene ucciso.

Tuttavia, se il bambino ha una pipe aperta alla quale sta scrivendo e il genitore sta leggendo, otterrà un SIGPIPE quando tenta di scrivere successivamente nella pipe, per cui l'azione predefinita è quella di eliminarlo. Questo è spesso ciò che accade nella pratica.

8

Su UNIX, non esiste alcuna relazione forzata tra le durate del processo padre e figlio. A rigor di termini, il processo termina solo quando chiama exit() o riceve un segnale non gestito per il quale l'azione predefinita deve terminare.

Tuttavia, un intero "gruppo processo conoscenze acquisite" in un "terminale di controllo" può ricevere segnali come SIGINT e SIGQUIT quando l'utente preme Ctrl-C, Ctrl \, ecc su che terminale. Un comportamento specifico è in parte implementato dalla shell di login (con l'aiuto del driver tty). I dettagli possono essere piuttosto complicati: guarda here e here

-9

Hai solo bisogno di sapere quale processo o servizio vuoi uccidere. Nel mio caso, httpd è.

killall -9 httpd 

Ucciderà tutti i processi figlio di httpd.

+0

Completamente mancato il punto della domanda. –

+0

Questo post non risponde alla domanda che è stata posta, e poiché altre risposte lo fanno, potresti voler cancellare questo post. –

-1

Se si chiude il pid del terminale che è l'id del processo principale del processo, il terminale viene chiuso. E quando il terminale è chiuso, anche tutti i suoi processi vengono uccisi. Ma se si crea una sub shell in shell, se si crea un processo e si uccide ppid di quel processo, solo quella sottocamerea uccide e il figlio diventa orfano. Il loro genitore diventa init e pid è 1.

[apprendista @ SIPL ~] $ ps -ef | grep sleep trainee 3893 3870 0 10:55 pts/1 00:00:00 sleep 4000 apprendista 3895 3788 0 10:55 pts/0 00:00:00 grep --color = auto sleep [tirocinante @ SIPL ~] $ kill - 9 3870 [apprendista @ SIPL ~] $ ps -ef | grep sleep trainee 3893 1 0 10:55 pts/1 00:00:00 sleep 4000 tirocinio 3906 3788 0 10:55 pts/0 00:00:00 grep --color = auto sleep

Problemi correlati