Comment attendre jusqu'à ce que les données sont écrites sur l'autre extrémité de la pipe

Je développe une application en C.
Le Parent et l'enfant de communiquer par le tuyau.
Avant d'écrire à la pipe, processus parent exécuter une autre consolidés. Dans l'exemple de code, j'ai utilisé du sommeil(10) prendre de retard.
Dans le processus de l'enfant, il doit lire les données à partir de la pipe.
Mais les données ne sont pas lues sur la fin de lecture de la pipe de l'enfant dans le processus.

int main()
{
    int pid;
    FILE *fp;
    fp = fopen("test.txt","w");
    char *buff;
    int fd[2];
    int count = 0 ;
    pipe(fd);
    pid = fork();
    if(pid == 0)
    {
        close(fd[1]);
        ioctl(fd[0], FIONREAD, &count);
        fprintf(fp,"Value of count: %d ",count);
        buff = malloc(count);
        fprintf(fp,"\n TIME before read: %s",__TIME__);
        read(fd[0], buff, count);
        fprintf(fp,"\nbuffer: %s\n TIME after read %s", buff, __TIME__);
    }
    else{
        close(fd[0]);
        sleep(10);    //delay caused by application specific code replaced with sleep
        write(fd[1],"THIS is it",10);
    }
    fclose(fp);
    return 0;
}

Comment rendre l'enfant à attendre jusqu'à ce que des données sont écrites à l'autre bout?

OriginalL'auteur User007 | 2013-03-04