函数open()在C中启动并永不结束

时间:2015-06-01 18:22:52

标签: c unix

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()中的一个(不知道哪一个)它只是拖延并保持在那里永远做某事......我错过了什么?

编辑:我要感谢所有回答的人,我能够更好地了解管道如何与您的帮助一起工作并解决我的问题。谢谢!

1 个答案:

答案 0 :(得分:1)

正如sjnarv所指出的那样(直到我完成了我的答案后我没有发表评论......),open()写入FIFO的调用将被阻止,直到FIFO打开以供读取另一个线程或另一个进程。