#include #include #include #include #include #include #include // fonction de traitement du signal SIGUSR1 void traitement(int sig) { (void) signal(SIGUSR1, traitement); printf("un signal SIGUSR1 ppid :%d\n", getppid()); } int main(int argc, char *argv[]) { int pid; (void) signal(SIGUSR1, traitement); // rederoutage des signaux SIGUSR1 // vers la fonction traitement pid = fork(); if (pid == -1) { printf("pb creation fork : %s\n", strerror(errno)); exit(1); } else { if (pid == 0) // process fils { printf("fils pid=%d\n", getpid()); kill(getppid(), SIGUSR1); sleep(2); // tempo pour ĂȘtre certain que le fils sera //encore vivant quand le pere lui //enverra son signal } else // process principal (pere) { printf("pere pid=%d\n", getpid()); kill(pid, SIGUSR1); sleep(2); // tempo pour ĂȘtre certain que le pere sera //encore vivant quand le fils lui //enverra son signal } } return EXIT_SUCCESS; }