[ LUGOS ] fork
Matjaz Terpin
matjazt na comcom.si
Pon Jun 22 07:34:18 CEST 1998
On Sun, 21 Jun 1998, Metod Koželj wrote:
> Howdy!
>
> On Sat, 20 Jun 1998, polz wrote:
>
> > 1. Ce proces forkam, kako naj cim eleganteje poskrbim da umre,
> > ko umre stars?
>
> Funkcija fork (glej man 2 fork) vrne dva razlicna rezultata. V starsevskem
> procesu vrne PID otroka, v otroskem procesu pa 0.
>
> Torej mora stars, preden izdihne, izvesti funkcijo kill (man 2 kill), ki
> ji kot parameter das PID otroka.
>
> > 2. Ko se child zakljuci, mi ostane zombie. Kako naj starsu povem,
> > da je otrok mrtev?
>
> Stars lahko pogleda, ali otrok se zivi. To naredis s funkcijo waitpid in
> ustreznimi parametri (man 2 waitpid; recimo
>
> if (waitpid (child, (int *) NULL, WNOHANG)!=child)
> fprintf (stderr, "Child PID=%d still runing.\n", child);
>
> ).
Se ena varianta:
procesu moras eksplicitno povedati, naj ignorira signal SIGCHLD,
npr.
signal(SIGCHLD,SIG_IGN);
To bi moralo prepreciti nastajanje zombijev.
LP!
Matjaz
------------------------------------------------------------
Matjaz Terpin
COMCOM d.o.o., Vojkova 4, 5280 Idrija, Slovenija
++386 (0)65 172 020
matjaz.terpin na comcom.si
------------------------------------------------------------
Dodatne informacije o seznamu Starilist