PDA

View Full Version : [C] processo defunct: cos´e´ ?


trallallero
05-06-2007, 07:31
Da quello che so, quando fai un ps -edaf e trovi dei [defunct], non c´e´ da preoccuparsi, ma in realta´ non so bene cosa siano.
E qui c´e´ un tipo che non li vorrebbe trovare quando chiudiamo i processi con ctrl-C (in effetti danno fastidio quando fai ps).
Visto che usiamo una serie di eseguibili (4-5) che comunicano tra loro e che ognuno apre threads, non potrebbe essere che quando facciamo ctrl-C semplicemente non viene eseguita la pthread_exit() ?
E comunque, c´e´ un modo per non trovarseli nella lista processi ?

NB: gestiamo questi segnali SIGTERM, SIGPIPE, SIGINT, SIGSEGV, SIGBUS, SIGABRT (anche se in questo caso basterebbe SIGINT)

cionci
05-06-2007, 08:24
Io sapevo dei processi "zombie".
Che rimangono nella lista di ps fino a quando i processi figli sono ancora attivi.
Magari è la stessa cosa...

andbin
05-06-2007, 08:25
Da quello che so, quando fai un ps -edaf e trovi dei [defunct], non c´e´ da preoccuparsi, ma in realta´ non so bene cosa siano.Un processo defunct (detto anche "zombie") è un processo che è terminato (ha eseguito cioè una exit() ) ma il cui processo padre non ha ancora eseguito una wait() per ottenere il exit status del figlio.

In pratica uno zombie occupa soltanto più uno slot nella lista dei processi, in attesa che il padre ne riconosca la terminazione.

http://en.wikipedia.org/wiki/Zombie_process

trallallero
05-06-2007, 08:34
Un processo defunct (detto anche "zombie") è un processo che è terminato (ha eseguito cioè una exit() ) ma il cui processo padre non ha ancora eseguito una wait() per ottenere il exit status del figlio.

In pratica uno zombie occupa soltanto più uno slot nella lista dei processi, in attesa che il padre ne riconosca la terminazione.

http://en.wikipedia.org/wiki/Zombie_process

interessante dal tuo link:

As a special case, under Linux, if the parent explicitly ignores the SIGCHLD (sets the handler to SIG_IGN, rather than simply ignoring the signal by default), all child exit status information will be discarded and no zombie processes will be left.

grazie. Adesso e´ da capire se c´e´ da preoccuparsi o no perche´ a volte sono tanti

cionci
05-06-2007, 08:59
Io sapevo dei processi "zombie".
Che rimangono nella lista di ps fino a quando i processi figli sono ancora attivi.
Magari è la stessa cosa...
Ho detto una cagata :stordita: :D

trallallero
05-06-2007, 09:56
Ho detto una cagata :stordita: :D

succede un po´ a tutti :D

Dark Phoenix
06-06-2007, 11:10
interessante dal tuo link:


grazie. Adesso e´ da capire se c´e´ da preoccuparsi o no perche´ a volte sono tanti

Tecnicamente c'è da preoccuparsi perché così ti "rubba" i PID (danno minore) ed in più (quel che è peggio) il sistema operativo deve tener traccia di informazioni relative al processo sprecando quindi memoria.

trallallero
06-06-2007, 11:59
Tecnicamente c'è da preoccuparsi perché così ti "rubba" i PID (danno minore) ed in più (quel che è peggio) il sistema operativo deve tener traccia di informazioni relative al processo sprecando quindi memoria.

beh siamo in fase di debug quindi e´ un continuo lancia, killa, compila, rilancia, rikilla ...
comunque grazie per l´avviso.

Intanto ho scoperto valgrind (debugger per l´utilizzo della ram), portentoso :eek:

Dark Phoenix
06-06-2007, 13:30
Non c'è di che!