名前付きパイプからデータを読み書きしています。書き込み側では、定数の 110 バイトを書き込んでいると表示されます。読み取り側では、ほとんどの場合、正しい 110 バイトを読み取っていると表示されますが、220 バイトまたは 330 バイトを読み取っていると表示される場合もあります。これは、私がそれを出力すると、同じ read() 内で同じメッセージが 2 回または 3 回続けて出力されるという事実にあります。読むための以下のコードでは、文字をクリアするために memset に何か問題がありますか? バッファーに何かが残っていない限り、書き込みよりも読み取りが多い方法は他に考えられません。
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);
}
}