Bonjour,
je dois écrire un programme C qui crée un processus fils. Le processus père doit être le premier à imprimer un message à l'écran, ensuite le processus fils doit imprimer un message à l'écran, ensuite le père, ensuite le fils, et ainsi de suite... Pour ce faire, je dois utiliser des signaux et je n'ai le droit d'utiliser qu'un seul handler.
Voici le code que j'ai écrit:Ce code compile sans problème, mais lorsque je lance le programme dans le shell, oh surprise, la fenêtre du shell se ferme ! (Gros plantage quoi !!!).
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
43
44
45
46
47 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <signal.h> #include <errno.h> #define SignalDuPere SIGUSR1 #define SignalDuFils SIGUSR2 pid_t filsID; void handler(int sig) { switch (sig) { case(SignalDuPere): fprintf(stderr,"%ld\n",sig); kill(filsID,SignalDuFils); case(SignalDuFils): fprintf(stderr,"%ld\n",sig); kill(getppid(),SignalDuPere); } } int main(int argc,char *argv[]) { extern int pid; switch(filsID=fork()) { case (-1): fprintf(stderr, "Erreur sur fork: %s\n",errno); exit(errno); case(0): signal(SignalDuFils, handler); while(1) pause(); default: signal(SignalDuPere, handler); kill(getpid(), SignalDuPere); while (1) pause(); } return 0; }
Un génie des processus peut-il éclairer ma lampe ?
Merci!
Partager