signal detem po skonceni rodice
Jirka Kosina
jikos na jikos.cz
Úterý Říjen 2 17:57:16 CEST 2001
Ahoj,
> > 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
--
JiKos.
Další informace o konferenci Linux