Bonjour,


Dans le cadre de mes tests sur les tubes nommés j'ai créer les programmes suivants:

1/Programme reader qui écrit dans le tube:

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
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
 
 
 
 
int main(){
 
    int fd;
    char msg[20];
 
 
    mkfifo("connexiontube",0644);
    fd=open("connexiontube",O_RDONLY);
 
 
     read(fd,msg,strlen(msg));
 
     printf("%s",msg);
 
 
    close(fd);
 
    return 0;
 
}
1/Programme writer qui lit depuis le tube:

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
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
 
 
 
int main(){
 
    int fd;
    char msg[20];
 
    printf("Saisissez un mot:");
    scanf("%s",msg);
 
 
 
    fd=open("connexiontube",O_WRONLY);
 
    write(fd,msg,strlen(msg));
 
 
    close(fd);
 
 
    return 0;
 
 
 
}
les deux programmes se compile bien et s'exécute bien.

Je lance les deux programme, puis je saisis un mot mais lors de l'affichage le programme reader m'affiche juste le premier caractère de la chaine entrée

donc ma question est :
Comment faire pour récupérer toute la chaine ?
dans le programme reader et après l’exécution de la fonction read() que contient la valeur de msg ?

Merci pour votre aide