set SIGCHLD sigmask to an expected value (SIG_DFL)
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Tue, 11 May 2004 18:31:01 +0000 (18:31 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Tue, 11 May 2004 18:31:01 +0000 (18:31 +0000)
use new exitLikeProcess() interface

git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1561 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/src/context-sync.hc
util-vserver/src/vnamespace.c
util-vserver/src/vps.c

index a0a442d..9bb5d29 100644 (file)
@@ -83,7 +83,7 @@ waitOnSync(pid_t pid, int p[2][2], bool is_prevent_race)
   
   Eclose(p[1][1]);
   l = Eread(p[1][0], &c, 1);
-  if (l!=1) exitLikeProcess(pid,0);
+  if (l!=1) exitLikeProcess(pid,0, wrapper_exit_code);
   l = Eread(p[1][0], &c, 1);
-  if (l!=0) exitLikeProcess(pid,0);
+  if (l!=0) exitLikeProcess(pid,0, wrapper_exit_code);
 }
index b57c03c..fc1cfb5 100644 (file)
@@ -95,6 +95,9 @@ static void
 newNamespace(char const *cmd)
 {
   pid_t                pid;
+
+  signal(SIGCHLD, SIG_DFL);
+  
 #ifdef NDEBUG    
   pid = sys_clone(CLONE_NEWNS|CLONE_VFORK|SIGCHLD, 0);
 #else
@@ -108,7 +111,7 @@ newNamespace(char const *cmd)
     case 0     :
       break;
     default    :
-      exitLikeProcess(pid, cmd);
+      exitLikeProcess(pid, cmd, wrapper_exit_code);
   }
 }
 
index 036ea12..48bfaa8 100644 (file)
@@ -27,6 +27,7 @@
 #include <lib/fmt.h>
 #include <assert.h>
 #include <fcntl.h>
+#include <signal.h>
 
 #define ENSC_WRAPPERS_VSERVER  1
 #define ENSC_WRAPPERS_STDLIB   1
@@ -231,6 +232,8 @@ int main(int argc, char *argv[])
     if (strcmp(argv[1], "--version")==0) showVersion();
   }
 
+  signal(SIGCHLD, SIG_DFL);
+
   if (!switchToWatchXid(&errptr)) {
     perror(errptr);
     exit(wrapper_exit_code);
@@ -257,8 +260,5 @@ int main(int argc, char *argv[])
   Eclose(p[0]);
   
   processOutput(data, len);
-
-  exitLikeProcess(pid, "ps");
-  perror("exitLikeProcess()");
-  return wrapper_exit_code;
+  exitLikeProcess(pid, "ps", wrapper_exit_code);
 }