sometimes daemonizing and vfork()/exit() is ok
authorMike Frysinger <vapier@gentoo.org>
Wed, 7 Jun 2006 21:48:30 +0000 (21:48 -0000)
committerMike Frysinger <vapier@gentoo.org>
Wed, 7 Jun 2006 21:48:30 +0000 (21:48 -0000)
libbb/vfork_daemon_rexec.c

index 59a2287b023d20cc076acabcdfdd7489cb884665..05c9c0dabf7d8c41315987f975fbc561631faaad 100644 (file)
 
 
 #ifdef BB_NOMMU
-void vfork_daemon_rexec(int nochdir, int noclose,
-               int argc, char **argv, char *foreground_opt)
+static void vfork_daemon_common(int nochdir, int noclose)
 {
        int fd;
-       char **vfork_args;
-       int a = 0;
 
        setsid();
 
@@ -41,7 +38,24 @@ void vfork_daemon_rexec(int nochdir, int noclose,
                dup2(fd, STDERR_FILENO);
                if (fd > 2)
                        close(fd);
-       }
+       }       
+}
+
+void vfork_daemon(int nochdir, int noclose)
+{
+       vfork_daemon_common(nochdir, noclose);
+
+       if (vfork())
+               exit(0);
+}
+
+void vfork_daemon_rexec(int nochdir, int noclose,
+               int argc, char **argv, char *foreground_opt)
+{
+       char **vfork_args;
+       int a = 0;
+
+       vfork_daemon_common(nochdir, noclose);
 
        vfork_args = xcalloc(sizeof(char *), argc + 3);
        vfork_args[a++] = "/bin/busybox";