如果不通过则不要进入

Don't enter on if and don't pass through

我有一个 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 从未被打印但 name 被打印,path 是一个 Fifo:

mknod(path, S_IFIFO|0666, 0);

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

Normally, opening the FIFO blocks until the other end is opened also.

也就是说,除非您以非阻塞模式显式打开它。

因此,我希望您的进程在 fopen() 调用中挂起,直到有人也打开 fifo 进行写入。