From 65aec1096a2b7b78a8cec50f99803cf04376a1a8 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Tue, 11 May 2004 18:31:01 +0000 Subject: [PATCH] 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 --- util-vserver/src/context-sync.hc | 4 ++-- util-vserver/src/vnamespace.c | 5 ++++- util-vserver/src/vps.c | 8 ++++---- 3 files changed, 10 insertions(+), 7 deletions(-) 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); } -- 1.8.1.5