diff options
author | Mike Frysinger | 2006-06-07 21:48:30 +0000 |
---|---|---|
committer | Mike Frysinger | 2006-06-07 21:48:30 +0000 |
commit | 6fb5847faf690099f6323a35bb0d4e41f65c0d3c (patch) | |
tree | 845e3487ae54b0961985fb0f60f913faf7b5c9e9 /libbb | |
parent | ca70774293a3ebb0f1ca4b0626b135cc74cfdea8 (diff) | |
download | busybox-6fb5847faf690099f6323a35bb0d4e41f65c0d3c.zip busybox-6fb5847faf690099f6323a35bb0d4e41f65c0d3c.tar.gz |
sometimes daemonizing and vfork()/exit() is ok
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/vfork_daemon_rexec.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index 59a2287..05c9c0d 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c @@ -23,12 +23,9 @@ #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"; |