c管道等待消息达到某个大小然后发送?

时间:2018-09-20 11:01:18

标签: c linux pipe ipc

我在父母与孩子之间的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");
}
  • 请忽略我对该功能的非阻塞用法

0 个答案:

没有答案