signal detem po skonceni rodice

Ing. Pavel PaJaSoft Janousek janousek na fonet.cz
Středa Říjen 3 09:11:14 CEST 2001


> > > K tomu, aby program bezel jako demon, prece staci dvojity fork(), a muzu
> > > klidne ukoncit shell, ktery to vyvolal, a demon pobezi dal - z toho
> > > prosteho duvodu, ze po zemreni rodice (ktere nastane vicemene okamzite po
> > > frok()u, prave kvuli demonizaci) se jako PPID procesu, ktery vzniknul
> > > prvnim fork()em, nastavi init.
> >       Tak toto mam skutecne odzkousene, ze tak jednoduche to neni:
> > 1. _Musim_ se odpojit od ridiciho terminalu nebo mne shell muze zabit
> > (ci jinak ovladat pres signaly) i kdyz jsem forkoval...
> > 2. Mam za to, ze se musim stat process group leader (ve sve rezii)
> 
> [jikos na twin jikos]$ cat a.c | grep -v \#include
> main(int argc, char *argv[])
> {
>   pid_t newpid;
> 
>   if ((newpid=fork()) < 0){fprintf(stderr,"fork() error.\n");return(-1);}
>   else if (newpid>0){fprintf(stdout,"fork ok - pid %d\n",newpid);return(0);}
>   while (1); {usleep(10000);}
> }
> [jikos na twin jikos]$ cc -o x a.c
> [jikos na twin jikos]$ ./xx
> fork ok - pid 1797
> [jikos na twin jikos]$
> 
> ted se od tohoto terminalu odhlasim, a z jineho dam
> 
> [jikos na twin jikos]$ ps aux | grep 1797
> jikos     1797 49.7  0.4  1328  308 pts/11   R    17:55   0:20 ./xx
> jikos     1818  0.0  0.9  1620  600 pts/11   S    17:56   0:00 grep 1797

	To co jste predvedl neni vlastnost signalu, ale konkretniho shellu
(BASH?), ktery mozna podporuje job controling, ale kazdy vytvareny
proces umistuje do nove procesove skupiny (jeste pred exec). Standardni
chovani na signal HUP je totiz ukonceni programu - zkuste mu pres kill
-HUP 1797 poslat tento signal a uvidite... - jenze signal se siri pouze
procesovou skupinou, ke ktere nalezi shell (jeho potomci ve smyslu
procesove skupiny, pro kterou muze (ale nemusi) byt process group
leader) - shell pri svem ukonceni posila vsem detem signal HUP (drive to
bylo skutecne polozeni modemu) a ti proto ukoncuji svou cinnost.

	To co popisujete nesouvisi s tim, co jsem psal drive... (hlavne v bode
1 - shell se sam zbavil moznosti proces xx pres signaly ovladat (proc to
vsak dela nevim?) a sh ci ksh se tak rozhodne nechovali... )..., ale se
specifickou vlastnosti jednoho konkretniho shellu na jedne platforme,
ostatne proces do odhlaseni se z patricne konzole ma stale ridici
terminal - muj pripad - (ps x - 18183 pts/0    R      0:01 ./xx), tudiz
ho lze ovladat...

-----------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft)                 FoNet, spol. s r. o.
Vyvoj software, Intranet / Internet          Sokolova 67, 619 00 Brno
E-mail: mailto:Janousek na FoNet.Cz             Tel.: +420  5  4324 4749
SMS:    mailto:P.Janousek na SMS.Paegas.Cz      Fax.: +420  5  4324 4751
WWW:    http://WWW.FoNet.Cz/               E-mail: mailto:Info na FoNet.Cz
-----------------------------------------------------------------------


Další informace o konferenci Linux