aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorvapier <vapier@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-06-07 21:48:30 +0000
committervapier <vapier@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-06-07 21:48:30 +0000
commita62731a42fd346e433cb4eaacaa9d0219792b1b6 (patch)
tree845e3487ae54b0961985fb0f60f913faf7b5c9e9 /libbb
parenta1e790e72d03f38650f240c10d70eb82016870d1 (diff)
downloadbusybox-w32-a62731a42fd346e433cb4eaacaa9d0219792b1b6.tar.gz
busybox-w32-a62731a42fd346e433cb4eaacaa9d0219792b1b6.tar.bz2
busybox-w32-a62731a42fd346e433cb4eaacaa9d0219792b1b6.zip
sometimes daemonizing and vfork()/exit() is ok
git-svn-id: svn://busybox.net/trunk/busybox@15333 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'libbb')
-rw-r--r--libbb/vfork_daemon_rexec.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c
index 59a2287b0..05c9c0dab 100644
--- a/libbb/vfork_daemon_rexec.c
+++ b/libbb/vfork_daemon_rexec.c
@@ -23,12 +23,9 @@
23 23
24 24
25#ifdef BB_NOMMU 25#ifdef BB_NOMMU
26void vfork_daemon_rexec(int nochdir, int noclose, 26static void vfork_daemon_common(int nochdir, int noclose)
27 int argc, char **argv, char *foreground_opt)
28{ 27{
29 int fd; 28 int fd;
30 char **vfork_args;
31 int a = 0;
32 29
33 setsid(); 30 setsid();
34 31
@@ -41,7 +38,24 @@ void vfork_daemon_rexec(int nochdir, int noclose,
41 dup2(fd, STDERR_FILENO); 38 dup2(fd, STDERR_FILENO);
42 if (fd > 2) 39 if (fd > 2)
43 close(fd); 40 close(fd);
44 } 41 }
42}
43
44void vfork_daemon(int nochdir, int noclose)
45{
46 vfork_daemon_common(nochdir, noclose);
47
48 if (vfork())
49 exit(0);
50}
51
52void vfork_daemon_rexec(int nochdir, int noclose,
53 int argc, char **argv, char *foreground_opt)
54{
55 char **vfork_args;
56 int a = 0;
57
58 vfork_daemon_common(nochdir, noclose);
45 59
46 vfork_args = xcalloc(sizeof(char *), argc + 3); 60 vfork_args = xcalloc(sizeof(char *), argc + 3);
47 vfork_args[a++] = "/bin/busybox"; 61 vfork_args[a++] = "/bin/busybox";