Je suis en train de lire/d'écrire des données dans un tube nommé. Du côté de l'écriture, il est écrit qu'il écrit 110 octets constants. Du côté de la lecture pour la plupart du temps, il est dit qu'il lit 110 octets, ce qui est correct, mais d'autres fois il dit qu'il lit 220 octets ou 330 octets. Ce qui est juste dans le fait que lorsque je l'imprime, il imprime le même message deux ou trois fois de suite dans la même lecture(). Dans le code ci-dessous pour la lecture suis-je faire quelque chose de mal avec le memset pour effacer le char? Je ne peux pas penser à une autre façon de lire plus alors est écrit à moins que quelque chose reste dans le tampon.unistd.h read() lit plus de données en cours d'écriture
int fd1, numread;
char bufpipe[5000];
while(1)
{
fd1 = open("/tmp/testPipe", O_RDONLY);
numread = read(fd1,bufpipe, 5000);//->this should always be 110
if(numread > 1)
{
printf("READ: %i", numread);
bufpipe[numread+1] = '\0';
memset(bufpipe,'\0',5001);
close(fd1);
}
}
vous monsieur sont mes héros. Je n'aurais jamais pensé à ça, merci – whatWhat