From: Enrico Scholz Date: Tue, 11 May 2004 18:31:01 +0000 (+0000) Subject: set SIGCHLD sigmask to an expected value (SIG_DFL) X-Git-Tag: VERSION_0_10~24 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65aec1096a2b7b78a8cec50f99803cf04376a1a8;p=util-vserver.git set SIGCHLD sigmask to an expected value (SIG_DFL) use new exitLikeProcess() interface git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1561 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/util-vserver/src/context-sync.hc b/util-vserver/src/context-sync.hc index a0a442d..9bb5d29 100644 --- a/util-vserver/src/context-sync.hc +++ b/util-vserver/src/context-sync.hc @@ -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); } diff --git a/util-vserver/src/vnamespace.c b/util-vserver/src/vnamespace.c index b57c03c..fc1cfb5 100644 --- a/util-vserver/src/vnamespace.c +++ b/util-vserver/src/vnamespace.c @@ -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); } } diff --git a/util-vserver/src/vps.c b/util-vserver/src/vps.c index 036ea12..48bfaa8 100644 --- a/util-vserver/src/vps.c +++ b/util-vserver/src/vps.c @@ -27,6 +27,7 @@ #include #include #include +#include #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); }