be more verbose when sending a signal
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Sat, 8 May 2004 01:28:37 +0000 (01:28 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Sat, 8 May 2004 01:28:37 +0000 (01:28 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1546 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/lib_internal/util-exitlikeprocess.c

index 9aa80c4..b5ab179 100644 (file)
 #  include <config.h>
 #endif
 
+#include "util.h"
+#include <lib/internal.h>
+
 #include <stdlib.h>
 #include <sys/types.h>
 #include <sys/resource.h>
 #include <sys/wait.h>
 #include <unistd.h>
 #include <signal.h>
+#include <sys/resource.h>
 
 void
-exitLikeProcess(int pid)
+exitLikeProcess(int pid, char const *cmd)
 {
   int          status;
   
@@ -38,6 +42,25 @@ exitLikeProcess(int pid)
     exit(WEXITSTATUS(status));
 
   if (WIFSIGNALED(status)) {
+    struct rlimit      lim = { 0,0 };
+
+    if (cmd) {
+      char             buf[sizeof(int)*3 + 2];
+      size_t           l = utilvserver_fmt_uint(buf, pid);
+      
+      WRITE_MSG(2, "command '");
+      WRITE_STR(2, cmd);
+      WRITE_MSG(2, "' (pid ");
+      write    (2, buf, l);
+      WRITE_MSG(2, ") exited with signal ");
+      l = utilvserver_fmt_uint(buf, WTERMSIG(status));      
+      write    (2, buf, l);
+      WRITE_MSG(2, "; following it...\n");
+    }
+
+    // prevent coredumps which might override the real ones
+    setrlimit(RLIMIT_CORE, &lim);
+      
     kill(getpid(), WTERMSIG(status));
     exit(1);
   }