Ho creato due processi, uno che scrive 3 messaggi sulla pipe e l'altro che li legge tutti poi termina, l'unico problema è che il processo writer funge inviando i 3 messaggi mentre il processo reader legge 3 volte dalla pipe ma l'ultimo messaggio letto è il secondo inviato dal writer, il terzo praticamente non lo legge.
qualcuno sà aiutarmi?
Ecco il codice del reader:
Codice: Seleziona tutto
/*Prende come parametro il nome della pipe*/
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
main(argc,argv)
int argc;
char *argv[];
{
int pfd_read, nbytes=1;
char bufin[300];
/* crea pipe e apre in lettura */
if(argc!=2){
printf("Usage: %s pipe\n", argv[0]);
exit(1);
};
if((mknod(argv[1],S_IFIFO | 0666,0) == -1) && (errno != EEXIST)){
perror("errore mknod:READ");
exit(1);
};
if((pfd_read=open(argv[1],O_RDONLY))==-1) {
perror("errore open:READ");
exit(1);
};
while(nbytes != 0){
if((nbytes=read(pfd_read,bufin,60))==-1){
perror("errore lettura pipe");
exit(1);
};
fflush(stdout);
printf("ho letto %s \n");
}
close (pfd_read);
}
