[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