aboutsummaryrefslogtreecommitdiff
path: root/libbb/vfork_daemon_rexec.c
diff options
context:
space:
mode:
authorlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-06-16 16:35:53 +0000
committerlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-06-16 16:35:53 +0000
commit92f0d4e45d4a1acb801dfad595ee89706b254f8c (patch)
tree189114865f4273ddad92855a7828a5af5f9269fa /libbb/vfork_daemon_rexec.c
parent7aa3fab536a57529ebb75eccd317adab0e9dc197 (diff)
downloadbusybox-w32-92f0d4e45d4a1acb801dfad595ee89706b254f8c.tar.gz
busybox-w32-92f0d4e45d4a1acb801dfad595ee89706b254f8c.tar.bz2
busybox-w32-92f0d4e45d4a1acb801dfad595ee89706b254f8c.zip
Revert svn 15333. If you vfork, you must either exec or exit. (The parent is
blocked until you do so.) git-svn-id: svn://busybox.net/trunk/busybox@15408 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'libbb/vfork_daemon_rexec.c')
-rw-r--r--libbb/vfork_daemon_rexec.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c
index 05c9c0dab..59a2287b0 100644
--- a/libbb/vfork_daemon_rexec.c
+++ b/libbb/vfork_daemon_rexec.c
@@ -23,9 +23,12 @@
23 23
24 24
25#ifdef BB_NOMMU 25#ifdef BB_NOMMU
26static void vfork_daemon_common(int nochdir, int noclose) 26void vfork_daemon_rexec(int nochdir, int noclose,
27 int argc, char **argv, char *foreground_opt)
27{ 28{
28 int fd; 29 int fd;
30 char **vfork_args;
31 int a = 0;
29 32
30 setsid(); 33 setsid();
31 34
@@ -38,24 +41,7 @@ static void vfork_daemon_common(int nochdir, int noclose)
38 dup2(fd, STDERR_FILENO); 41 dup2(fd, STDERR_FILENO);
39 if (fd > 2) 42 if (fd > 2)
40 close(fd); 43 close(fd);
41 } 44 }
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);
59 45
60 vfork_args = xcalloc(sizeof(char *), argc + 3); 46 vfork_args = xcalloc(sizeof(char *), argc + 3);
61 vfork_args[a++] = "/bin/busybox"; 47 vfork_args[a++] = "/bin/busybox";