int j = 1;
if((estado = open(SHELL, O_WRONLY))== -1){
if(errno == ENOENT){
mkfifo(SHELL,0666);
estado = open(SHELL, O_WRONLY);
}
else{
perror("Erro a abrir pipe de estado da shell : ");
exit(1);
}
}
write (estado, &j,1);
/************************************************/
由于某种原因,这个程序从来没有计算过这些open()中的一个(不知道哪一个)它只是拖延并保持在那里永远做某事......我错过了什么?
编辑:我要感谢所有回答的人,我能够更好地了解管道如何与您的帮助一起工作并解决我的问题。谢谢!答案 0 :(得分:1)
正如sjnarv所指出的那样(直到我完成了我的答案后我没有发表评论......),open()
写入FIFO的调用将被阻止,直到FIFO打开以供读取另一个线程或另一个进程。