Bonsoir bonsoir,

Je vous explique mon problème, je dois réaliser, en cours de c, deux programmes communiquant avec un tube nommée.

L'un "serveur" et l'autre "client", voici leur fonctionnement :
- Le serveur crée un tube dans le système de fichiers, nommé /tmp/fifo. Il ouvre ensuite ce tube en lecture,
puis le rouvre sous forme de flux en attendant des textes envoyés par le client.
- Le client essaye d'ouvrir en écriture seule le tube crée par le serveur. S'il n'existe pas, le processus client
se termine.
- Le client envoie au serveur un texte entré par l'utilisateur comme argument au programme, et il se termine.
- Le serveur affiche à écran le texte envoyé par le client, et il reste en attente d'autres messages.


Le résultat attendu :

Dans un terminal :
$ ./client bonjour
$ ./client "comment aller vous?"
$ ./client "y a t il quelqu un?"

Dans un deuxième :
$ ./serveur
>>> bonjour
>>> comment aller vous?
>>> y a t il quelqu un?


( On doit, pour réaliser ces programmes, utiliser les fonctions suivantes : mkfifo, unlink, fopen, fputs, fgets, fclose)

Voici le code que j'ai réalisé :

Code du Serveur :

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
 
int main(int argc, char ** argv) {
 
    unlink("/tmp/fifo");
    FILE* tube = NULL;
    char text[20];
    mkfifo("/tmp/fifo",0666);
 
 
    while (1) {
        tube = fopen("/tmp/fifo","r");
        fgets(text,20,tube);
        printf(">>>>> %s",text);
        fflush(stdout);
        fclose(tube);
 
    }
 
 
 
 
    return 0;
}
Code du Client :

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
 
int main(int argc, char * argv[]) {
 
    FILE* tube = NULL;
 
    if (fopen("/tmp/fifo","r")==NULL)
        exit(0);
 
    tube = fopen("/tmp/fifo","w");
 
    fputs(argv[1],tube);
 
 
    fclose(tube);
 
    return 0;
}

...Et donc ça ne marche pas..

Bizarre puisque lorsque je tente d'écrire dans le tube "manuellement" avec "cat > /tmp/fifo" " là tout marche bien..


Voila voila je solicite donc votre aide pour avoir une petite piste


Bonne soirée et merci !