From: Enrico Scholz Date: Tue, 11 May 2004 18:24:49 +0000 (+0000) Subject: exitLikeProcess(): never return... X-Git-Tag: VERSION_0_10~29 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f254bc9645c0c0817cc1be277dcc4c39fe52709;p=util-vserver.git exitLikeProcess(): never return... git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1556 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/util-vserver/lib_internal/util-exitlikeprocess.c b/util-vserver/lib_internal/util-exitlikeprocess.c index b5ab179..4a94eb1 100644 --- a/util-vserver/lib_internal/util-exitlikeprocess.c +++ b/util-vserver/lib_internal/util-exitlikeprocess.c @@ -30,13 +30,18 @@ #include #include #include +#include void -exitLikeProcess(int pid, char const *cmd) +exitLikeProcess(int pid, char const *cmd, int ret) { - int status; + int status; - if (wait4(pid, &status, 0,0)==-1) return; + if (wait4(pid, &status, 0,0)==-1) { + + perror("wait()"); + exit(ret); + } if (WIFEXITED(status)) exit(WEXITSTATUS(status)); @@ -64,4 +69,22 @@ exitLikeProcess(int pid, char const *cmd) kill(getpid(), WTERMSIG(status)); exit(1); } + else { + char buf[sizeof(int)*3 + 2]; + size_t l = utilvserver_fmt_uint(buf, WTERMSIG(status)); + + WRITE_MSG(2, "Unexpected status "); + write (2, buf, l); + WRITE_MSG(2, " from '"); + if (cmd) { + WRITE_STR(2, cmd); + WRITE_MSG(2, " (pid "); + } + l = utilvserver_fmt_uint(buf, pid); + write (2, buf, l); + if (cmd) WRITE_MSG(2, ")\n"); + else WRITE_MSG(2, "\n"); + + exit(ret); + } }