从管道读几次

时间:2014-11-21 23:39:51

标签: c file pipe

我有两个进程,一个是父亲,另一个是儿子,儿子需要访问一个文本文件,读取它并通过管道发送给父亲,这样他就可以打印出来了。我不知道文件的大小,所以我想最好的方法是当时发送一行文件,但我不知道如何让父亲知道什么时候继续读取管道,什么时候到停止。

以下是我在想的样本:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <pwd.h>
#include <grp.h>
#include <dirent.h>

void main(int argc,char *argv[]){
    int pipes[2];
    pipe(pipes);
    pid_t son;

    son = fork();

    if(son ==0){
        FILE *file;
        char buff[1020];
        if ((file = fopen("path","r")) == NULL) printf("Error  %s\n",strerror(errno));
        close(pipes[0]);
        while (fgets(buff,1020,file) != NULL){
            write(pipes[1],buff,strlen(buff) +1);

        }}
    else{
        char *bufftemp = malloc(sizeof(char)*1024);

            close(pipes[1]);
            while (read(pipes[0],bufftemp,1024) != 0 ){
                printf("FATHER  %s",bufftemp );
            }
            free(bufftemp);
            printf("\n");
    }


    exit(0);



}

如果我从儿子那里打印buff,它会打印每一行,但是父亲似乎每次都没有阅读,只是读取第一行就是这样。

0 个答案:

没有答案