Bonjour tout le monde ,
je suis nouveau dans la programmation C sous Linux .
j'ai un petit problème , je veux écrire un programme ou un père crée un processus fils , le père traite une chaine de caractère de 0 et 1 , il envoi SIGUSR1 a son fils s'il rencontre un 0 et SIGUSR2 s'il rencontre 1 et le fils s'il reçoit SIGUSR1 il affiche bit0 reçu sinon il affiche bit1 reçu .
j'ai essayé avec ce programme mais ça ne marche pas . aidez moi s'il vous plait
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 #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<signal.h> #include<unistd.h> void trait_sig(int numero) { switch (numero) { case SIGUSR1 : printf("bit0 recu ");break; case SIGUSR2 : printf("bit1 recu ");break; default : printf ("signal %d recu ",numero);break; } } int main () { int i; char ch[64]; int p; int nb_sig; p==fork(); if (p) { /* le pere */ printf("entrer une chaine de caracteres "); gets(ch); for (i=0;ch[i];i++) if (ch[i]=='0'){ kill(p,SIGUSR1); } else { kill(p,SIGUSR2) ; } } else { /* le fils */ for (nb_sig=1;nb_sig<NSIG;nb_sig++) signal(nb_sig, trait_sig); while(1); } }
Partager