Date: Tue, 8 Apr 1997 17:53:26 +0000 From: "Jesus A. Mora Marin" <amora@zoom.es> To: questions@freebsd.org Subject: Becoming a daemon the long way... Message-ID: <199704081559.RAA02758@silvester.zoom.es>
next in thread | raw e-mail | index | archive | help
Greetings! These days I have been discussing with a fellow about the right way to make a process to run as a daemon. The easy way to do this seems to be -in a simplified scheme-: main() { ... if(fork()) /* let's say it'll never fail! */ exit(0); /* Parent dies */ /* child is inherited by init and becomes a daemon */ here_the_daemonized_code; } Another approach I saw somewhere -and the one I've been using- is a bit more complex: main() { ... if(!fork()) { /* child */ if(!fork()) { /* child's child */ while(getppid() != 1) sleep(1); code_to_daemonize; ... } exit(0); } wait(); /* parent waits to reap the first child */ exit(0); } This approach seems to be aimed to guarantee that the daemon process is inherited by init, so there is no chance to become a zombie process if it eventually dies. Is this really needed? By the way, are there any system related conditions that make zombies to be generated? TIA ---- Jesus A. Mora Marin, MD (aka EA7HAC, ex-EC7DVE) Email: amora@zoom.es
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704081559.RAA02758>