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);
    }
}