(no commit message)
authorMatthias Wachs <wachs@net.in.tum.de>
Tue, 29 Jun 2010 15:39:42 +0000 (15:39 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Tue, 29 Jun 2010 15:39:42 +0000 (15:39 +0000)
contrib/Makefile.am
contrib/timeout_watchdog.c

index f8e0d2f4903f9ef79c3992b4b876bee4ba401195..43348b3098d15daf2793721b3128e49365e55726 100644 (file)
@@ -1,3 +1,9 @@
+noinst_PROGRAMS = \
+ timeout_watchdog
+
+timeout_watchdog_SOURCES = \
+ timeout_watchdog.c 
+
 dist_pkgdata_DATA = \
  gnunet-logo-color.png \
  defaults.conf
index 82bf11b0fd2e940468966890b47bb5415c9743fa..27b46f2b03e503938c5468346767ccbc3f861192 100644 (file)
  * @author Matthias Wachs
  */
 
-#include "signal.h"
-#include "stdio.h"
-#include "stdlib.h"
+#include <sys/types.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include <unistd.h>
 #include <wait.h>
 
-static int child_died;
 static pid_t child;
 
 static void sigchld_handler(int val)
@@ -55,15 +55,13 @@ static void sigchld_handler(int val)
 static void sigint_handler(int val)
 { 
   kill(0, val);
-  exit(1);
+  exit(val);
 }
 
-
 int main(int argc, char *argv[])
 {
 int timeout = 0;
-int remain = 0;
-int ret = 0;
+pid_t gpid =0;
 
 if (argc < 3)
 {  
@@ -76,21 +74,22 @@ timeout = atoi(argv[1]);
 if (timeout == 0)
   timeout = 600;   
 
+/* with getpgid() it does not compile, but getpgrp is the BSD version and working */
+gpid = getpgrp();
 
-char ** arguments = &argv[3];
-
-pid_t gpid = getpgid(0);
 signal(SIGCHLD, sigchld_handler);
 signal(SIGABRT, sigint_handler);
-signal(SIGKILL, sigint_handler);
+signal(SIGFPE,  sigint_handler);
 signal(SIGILL,  sigint_handler);
-signal(SIGSEGV, sigint_handler);
 signal(SIGINT,  sigint_handler);
+signal(SIGSEGV, sigint_handler);
 signal(SIGTERM, sigint_handler);
 
 child = fork();
 if (child==0)
 {
+  /*  int setpgrp(pid_t pid, pid_t pgid); is not working on this machine*/
+   //setpgrp (0, pid_t gpid);
    setpgid(0,gpid);
    execvp(argv[2],&argv[2]);
    exit(1);
@@ -101,6 +100,7 @@ if (child > 0)
   kill(0,SIGABRT);
   exit(1);
 }  
+exit(1);
 }
 
 /* end of timeout_watchdog.c */