我有一个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);
答案 0 :(得分:1)
从FIFO手册页(http://man7.org/linux/man-pages/man7/fifo.7.html):
通常,打开FIFO块直到另一端打开。
也就是说,除非您在非阻塞模式下明确打开它。
所以,我希望你的进程挂在fopen()
调用中,直到有人打开fifo进行写作。