#include #include #include #include #include #include #include /* Je laisse volontairement cette fonction statique, qui empêche mon programme de fonctionner car je n'ai pas complété l'exercice, elle aurait normalement servie à afficher le premier processus à avoir terminer grâce aux signaux static void first_proc(int sig); static void first_proc(int sig){ switch (sig){ case SIGUSR1: printf("Le premier fils a terminé en premier"); break; case SIGUSR2: printf("Le second fils a terminé en premier"); break; default: break; } }*/ int main(int argc, char *argv[]){ pid_t pid1, pid2; pid1 = fork(); pid2 = fork(); /* De même que plus haut dans mon programme, il s'agit ici de la gestion d'erreur dans le cas ou ma fonction fonctionnait if(signal(SIGUSR1,first_proc) == SIG_ERR) { perror("Error sig"); exit(-1); } if(signal(SIGUSR2,first_proc) == SIG_ERR) { perror("Error sig"); exit(-1); } */ if(pid1==0) { printf("Processus père de pid : %d, avec fils1 de pid : %d\n", getpid(), getppid()); if(execlp("ls", "ls", "-l", NULL) == -1) { perror("exec"); exit(-1); } } else { wait(NULL); } printf("\n"); if(pid2==0){ printf("Processus père de pid : %d, avec fils2 de pid : %d\n", getpid(), getppid()); if(execlp("ps", "ps", "-l", NULL) == -1) { perror("exec"); exit(-1); } } else { wait(NULL); } printf("\n"); return EXIT_SUCCESS; }