如果没有通过,请不要进入

时间:2016-05-19 11:35:52

标签: c linux fifo

我有一个if语句:

printf("name");
if((fp = fopen(path, "r")) == NULL) {
    perror("fopen");
    exit(1);
}
printf("name2");//Debug propose
while(fgets(mensagem,250,fp)!=NULL){
    printf("%s",mensagem);
}

fclose(fp);

出于某种原因,name2永远不会打印,但会打印namepath是Fifo:

mknod(path, S_IFIFO|0666, 0);

1 个答案:

答案 0 :(得分:1)

从FIFO手册页(http://man7.org/linux/man-pages/man7/fifo.7.html):

  

通常,打开FIFO块直到另一端打开。

也就是说,除非您在非阻塞模式下明确打开它。

所以,我希望你的进程挂在fopen()调用中,直到有人打开fifo进行写作。