From: Matthias Wachs Date: Tue, 29 Jun 2010 15:39:42 +0000 (+0000) Subject: (no commit message) X-Git-Tag: initial-import-from-subversion-38251~21129 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b5b6ae8b070e20732ae2f6afdfc248b372242462;p=oweals%2Fgnunet.git --- diff --git a/contrib/Makefile.am b/contrib/Makefile.am index f8e0d2f49..43348b309 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -1,3 +1,9 @@ +noinst_PROGRAMS = \ + timeout_watchdog + +timeout_watchdog_SOURCES = \ + timeout_watchdog.c + dist_pkgdata_DATA = \ gnunet-logo-color.png \ defaults.conf diff --git a/contrib/timeout_watchdog.c b/contrib/timeout_watchdog.c index 82bf11b0f..27b46f2b0 100644 --- a/contrib/timeout_watchdog.c +++ b/contrib/timeout_watchdog.c @@ -24,13 +24,13 @@ * @author Matthias Wachs */ -#include "signal.h" -#include "stdio.h" -#include "stdlib.h" +#include +#include +#include +#include #include #include -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 */