#include #include #include #include #include #include #include #include "helpers.c" #include "helpers.h" #define BUF_SIZE 256 void kill_son(int) { if (waitpid(-1, NULL, WNOHANG) == 0) { kill(0, SIGTERM); } else exit(0); } int main(int argc, char **argv) { char *args[argc - 1]; int secondes = (int)strtod(argv[1], NULL); pid_t p; if (argc < 3) { printf("Usage : %s [arg]", argv[0]); return EXIT_FAILURE; } for (int i = 2; i < argc; i++) { args[i - 2] = argv[i]; } args[argc - 2] = NULL; p = fork(); switch (p) { case 0: execvp(argv[2], args); exit(0); case -1: exit(EXIT_FAILURE); default: alarm(secondes); set_signal_handler(SIGALRM, &kill_son); sleep(secondes); } exit(0); }