/**********************************************************/ /* DUT INFORMATIQUE - M311 - R. CHIGNOLI */ /* p_multi_fork_signal : Après fork, */ /* - PERE : Affiche son pid et ppid, */ /* Ignore le signal SIGINT */ /* S'arrete à la reception du signal SIGUSR1, */ /* Se met en boucle infinie. */ /* - FILS : Affiche son pid et son ppid, */ /* Cree 3 (sous)fils */ /* Attend un signal SIGTERM de l'un des fils */ /* Envoie un signal SIGINT a son pere, */ /* Se met en boucle infinie. */ /* Envoie le signal SIGUSR1 a son pere a */ /* l'interception du signal SIGTERM puis */ /* meurt. */ /* - Chaque sous-FILS : Affiche son pid et son ppid, */ /* Se desolidarise de son pere, */ /* Attend un signal SIGUSR1 de l'utilisateur, */ /* Se met en boucle infinie. */ /* Envoie le signal SIGTERM vers son pere */ /* a l'interception du signal SIGUSR1. */ /* Se termine en recevant le signal SIGUSR2 */ /* de la part de l'utilisateur. */ /* NB : à la fin du scenario, il ne reste que les trois */ /* sous-fils arretable par envoi de signaux SIGUSR2 */ /**********************************************************/ # include # include /**********************/ /* PARTIE A COMPLETER */ /**********************/ main () { int res; /**********************/ /* PARTIE A COMPLETER */ /**********************/ res = fork(); if (res < 0) printf ("ERREUR FORK"); else if (res == 0) { // FILS /**********************/ /* PARTIE A COMPLETER */ /**********************/ } else { // PERE /**********************/ /* PARTIE A COMPLETER */ /**********************/ } }