在C中打开FIFO时遇到问题

时间:2010-12-30 10:41:35

标签: c file-io fifo mkfifo

我在用C语言打开FIFO时遇到了麻烦..首先我使用mkfifo()函数创建了它们,权限为:0777,当我尝试打开它们时,它成功打开了第一个FIFO,然后是进程将卡在打开第二个FIFO,这是我的代码:

fd1 = open("FIFO1_PATH", O_WRONLY );
fd2 = open("FIFO2_PATH", O_WRONLY );

这不会被执行,但是一旦我评论第二行,它就会执行!每个进程的开放FIFO数量是否有限制?我不知道为什么会这样。我只花了3个小时试图弄清问题是什么,但没有任何结果:(

2 个答案:

答案 0 :(得分:4)

我刚刚做对了:)

我必须等待打开过程,直到其他进程打开FIFO进行读取(并且它将被阻止读取)...通过在写入过程中休眠,我将确保打开其他进程进行读取。

答案 1 :(得分:0)

回答有关限制的问题 - Linux中的默认值是进程的1024个文件描述符。您的问题可能是没有打开第二个FIFO进行读取,因此可以打开写入块。