- passthrough SIGTERM
authormetze <metze@1e5ffdc8-eadd-0310-9daa-9cb4117fe24b>
Tue, 21 Mar 2006 21:24:28 +0000 (21:24 +0000)
committermetze <metze@1e5ffdc8-eadd-0310-9daa-9cb4117fe24b>
Tue, 21 Mar 2006 21:24:28 +0000 (21:24 +0000)
- pass SIGTERM as reaction to a SIGUSR1

metze

git-svn-id: file:///home/svn/build-farm/trunk@293 1e5ffdc8-eadd-0310-9daa-9cb4117fe24b

timelimit.c

index 44c9618d1a476670a5dd30412ae9ed398b738d93..af8ff274545ad04cb1fdcfde22879e57909a4499 100644 (file)
@@ -17,6 +17,9 @@ static pid_t child_pid;
 static void usage(void)
 {
        printf("usage: timelimit <time> <command>\n");
+       printf("   SIGALRM - passes SIGKILL to command's process group and exit(1)\n");
+       printf("   SIGUSR1 - passes SIGTERM to command's process group\n");
+       printf("   SIGTERM - passes SIGTERM to command's process group and exit(0)\n");
 }
 
 static void sig_alrm(int sig)
@@ -26,6 +29,17 @@ static void sig_alrm(int sig)
        exit(1);
 }
 
+static void sig_term(int sig)
+{
+       kill(-child_pid, SIGTERM);
+       exit(0);
+}
+
+static void sig_usr1(int sig)
+{
+       kill(-child_pid, SIGTERM);
+}
+
 static void new_process_group(void)
 {
 #ifdef BSD_SETPGRP
@@ -62,6 +76,8 @@ int main(int argc, char *argv[])
                exit(1);
        }
 
+       signal(SIGTERM, sig_term);
+       signal(SIGUSR1, sig_usr1);
        signal(SIGALRM, sig_alrm);
        alarm(maxtime);