diff options
author | landley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-06-16 16:35:53 +0000 |
---|---|---|
committer | landley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-06-16 16:35:53 +0000 |
commit | 92f0d4e45d4a1acb801dfad595ee89706b254f8c (patch) | |
tree | 189114865f4273ddad92855a7828a5af5f9269fa /libbb/vfork_daemon_rexec.c | |
parent | 7aa3fab536a57529ebb75eccd317adab0e9dc197 (diff) | |
download | busybox-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.c | 24 |
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 |
26 | static void vfork_daemon_common(int nochdir, int noclose) | 26 | void 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 | |||
44 | void vfork_daemon(int nochdir, int noclose) | ||
45 | { | ||
46 | vfork_daemon_common(nochdir, noclose); | ||
47 | |||
48 | if (vfork()) | ||
49 | exit(0); | ||
50 | } | ||
51 | |||
52 | void 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"; |