/**********************************************************/ /* DUT INFORMATIQUE - M311 - R. CHIGNOLI */ /* p_fork_signal : Apr�s fork, */ /* - PERE : Affiche son pid et ppid, */ /* Ignore le signal SIGINT et le montre */ /* S'arrete � la reception du signal SIGUSR1, */ /* se met en boucle infinie. */ /* - FILS : Affiche son pid et son ppid, */ /* Envoie trois signaux SIGINT au pere, */ /* Attend un signal SIGTERM de l'utilisateur */ /* Se met en boucle infinie. */ /* Envoie le signal SIGUSR1 a son pere a */ /* l'interception du signal SIGTERM puis */ /* meurt. */ /**********************************************************/ # include # include # include # include void repSIGINT() { printf ("\nJ'ignore le signal SIGINT ()\n"); } int main () { int res; res = fork(); if (res < 0){ printf ("ERREUR FORK\n"); } else { if (res == 0) { /************************** FILS ***********************/ printf("Je suis le fils : "); printf("pid : %d\n", getpid()); printf("ppid : %d\n",getppid()); for (int i = 0; i < 5; i++) { kill(getppid(), SIGINT); sleep(1); } } else { /************************** PERE ***********************/ printf("Je suis le père : "); printf("pid : %d\n", getpid()); printf("ppid : %d\n",getppid()); signal(SIGINT, repSIGINT); } } for(;;); return 0; }