svn commit: trunk/busybox/libbb

vapier at busybox.net vapier at busybox.net
Wed Jun 7 21:48:31 UTC 2006


Author: vapier
Date: 2006-06-07 14:48:30 -0700 (Wed, 07 Jun 2006)
New Revision: 15333

Log:
sometimes daemonizing and vfork()/exit() is ok

Modified:
   trunk/busybox/libbb/vfork_daemon_rexec.c


Changeset:
Modified: trunk/busybox/libbb/vfork_daemon_rexec.c
===================================================================
--- trunk/busybox/libbb/vfork_daemon_rexec.c	2006-06-07 21:47:34 UTC (rev 15332)
+++ trunk/busybox/libbb/vfork_daemon_rexec.c	2006-06-07 21:48:30 UTC (rev 15333)
@@ -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,8 +38,25 @@
 		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";
 	while(*argv) {




More information about the busybox-cvs mailing list