Salut tout le monde,
J'ai une question sur la programmation système sous linux et notamment avec l'utilisation des signaux.
Je voudrais savoir s'il était possible de créer un programme qui se duplique - grâce la fonction fork - et dont le processus père envoie un signal - avec la fonction kill - au processus fils et dont celui-ci le traite, notamment grâce à la fonction sigaction ?
J'aimerais savoir si le code suivant est correct :
Merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <signal.h> void handler(int signum) { fprintf(stdout, "Signal recu : %d\n", signum) ; } int main(int argc, char *argv[]) { pid_t child = fork() ; if (child == -1) { perror("fork") ; fprintf(stderr, "file: %s, line: %s\n", __FILE__, __LINE__) ; exit(EXIT_FAILURE) ; } if (child == 0) { struct sigaction act ; sigemptyset(&(act.sa_mask)) ; act.sa_handler = handler ; act.sa_flags = 0 ; sigaction(SIGUSR2, &act, NULL) ; exit(EXIT_SUCCESS) ; } kill(child, SIGUSR2) ; wait(NULL) ; return 0 ; }
Partager