我在父母与孩子之间的IPC通信中使用管道。孩子使用stdout发送消息。而父级则无法读取功能。
问题是孩子没有一一发送邮件。它会在达到一定大小(我认为是4096个字符)的同时将其中的一些一起发送。
这是我的阅读功能:
void waitMessage(int id,char* buffer,int* size,struct Pipe * pipes){
printf("waiting %d\n",id);
char c = '\0';
int i = 0;
fprintf(stderr,"recieved: ");
fcntl( pipes[id].fd[0][0], F_SETFL, fcntl(pipes[id].fd[0][0], F_GETFL) | O_NONBLOCK);
int res = -1;
while(res == -1)
res = read(pipes[id].fd[0][0],&c,1);
while(res != -1){
buffer[i] = c;
printf("%c",buffer[i]);
i++;
res = read(pipes[id].fd[0][0],&c,1);
}
(*size) = i;
printf("\n");
}