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)
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
exit(1);
}
+ signal(SIGTERM, sig_term);
+ signal(SIGUSR1, sig_usr1);
signal(SIGALRM, sig_alrm);
alarm(maxtime);