X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fdaemonize%2Fdaemonize.c;h=bd32ecbbaeebc866426eb212ca3811264e060d21;hb=ce907a7f849c8cce11083864bf39c84a0f6c7810;hp=ff12bfce3f7d15dfcab1053f7a673cae23963125;hpb=ca4485a1cd6ed331aa9a52662a00de81a9209fd6;p=ccan diff --git a/ccan/daemonize/daemonize.c b/ccan/daemonize/daemonize.c index ff12bfce..bd32ecbb 100644 --- a/ccan/daemonize/daemonize.c +++ b/ccan/daemonize/daemonize.c @@ -1,3 +1,4 @@ +/* Licensed under BSD-MIT - see LICENSE file for details */ #include #include #include @@ -14,8 +15,9 @@ bool daemonize(void) /* Separate from our parent via fork, so init inherits us. */ if ((pid = fork()) < 0) return false; + /* use _exit() to avoid triggering atexit() processing */ if (pid != 0) - exit(0); + _exit(0); /* Don't hold files open. */ close(STDIN_FILENO); @@ -31,7 +33,8 @@ bool daemonize(void) close(0); /* Session leader so ^C doesn't whack us. */ - setsid(); + if (setsid() == (pid_t)-1) + return false; /* Move off any mount points we might be in. */ if (chdir("/") != 0) return false;