lecture depuis un tube nommé
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:
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:
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 8O
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