[gl-como] Fork class in c++
francesco
francesco@brisa.homelinux.net
Lun 15 Gen 2007 23:13:55 CET
Pietro "m0nt0" Montorfano ha scritto:
> Ciao a tutti, vi sottopongo il seguente problema che riguarda la
> programmazione c++ su linux, spero che ci sia qualcuno che mi possa dare
> una mano.
>
> Allora, sto facendo una classe in c++ per gestire dei processi (tre
> server che girano in contemporanea, fanno cose diverse e non possono
> essere tre programmi diversi), ho guardato e fatto esperimenti con i
> thread ma la ciulata è che i thread non possono essere killati, allora
> mi son detto, vado di fork e risolvo il problema, e cosi effettivamente
> è stato. Posso controllare tutti i child creati, farli partire, killarli
> e tutto. La classe ha un metodo virtual Execute che ereditato ed
> implementato contiene il codice da eseguire nel processo child.
>
> Ora il problema che mi si pone è che uccidendo il child (minchia
> l'infanticidio :D), mi resta uno zombie (processo con tutto libero ma
> con ancora il pid) e resta li fino a quando non viene terminato anche il
> padre, questo è il comportamento standard, ci mancherebbe, ma mi da un
> fastidio esagerato, anche perchè pensando che con i vari controlli
> magari vengono lanciati e rilanciati i vari child, dopo un mese di
> server funzionante mi ritroverei con una frega di processi zombi.
>
> Quindi ho pensato: faccio una cosa fichissima, doppia fork e rendo
> orfano l'ultimo processo che cosi verrebbe ereditato da init e, se
> killato, non lascerebbe zombie.
> Esempio:
>
> Programma Main
> Fork1() -> creo il processo temporaneo figlio di Main
> Programma Tmp
> Fork2() -> creo il Child reale figlio di Tmp
> Programma Child
> Killo il processo Tmp
> Vado avanti a farmi i bit miei
> vado avanti
>
> in questo modo se dovessi killare Child non dovrebbero esserci zombie.
>
> Ok, dopo questo papiro 3 domande:
>
> 1) E' giusto quanto pensato?
> 2) Se si posso passare il pid di child a main?
> 3) Se si come cazz faccio??
>
> Azz che roba complicata, spero si capisca.
>
> Ciao!!
>
Gli zombi restano perchè i processi padri non vengono notificati della
morte dei processi figlio, avevo avuto anche io lo stesso problema,
risolto ma non ricordo come, cerca con google che dovrebbe dirti tutto.
ciao
> Pietro
>
>
> ------------------------------------------------------------------------
>
>
--
Brisa Francesco
Via Gabelli 16
22077 Olgiate Comasco (CO)
http://brisa.homelinux.net
francesco@brisa.homelinux.net
________ ______
/ ____/ / / ____/___ ____ ___ ____
/ / __/ / ______ / / / __ \/ __ `__ \/ __ \
/ /_/ / /___ /_____/ / /___/ /_/ / / / / / / /_/ /
\____/_____/ \____/\____/_/ /_/ /_/\____/
http://www.gl-como.org
Maggiori informazioni sulla lista
gl-como