我在用C语言打开FIFO时遇到了麻烦..首先我使用mkfifo()函数创建了它们,权限为:0777,当我尝试打开它们时,它成功打开了第一个FIFO,然后是进程将卡在打开第二个FIFO,这是我的代码:
fd1 = open("FIFO1_PATH", O_WRONLY );
fd2 = open("FIFO2_PATH", O_WRONLY );
这不会被执行,但是一旦我评论第二行,它就会执行!每个进程的开放FIFO数量是否有限制?我不知道为什么会这样。我只花了3个小时试图弄清问题是什么,但没有任何结果:(
答案 0 :(得分:4)
我刚刚做对了:)
我必须等待打开过程,直到其他进程打开FIFO进行读取(并且它将被阻止读取)...通过在写入过程中休眠,我将确保打开其他进程进行读取。
答案 1 :(得分:0)
回答有关限制的问题 - Linux中的默认值是进程的1024个文件描述符。您的问题可能是没有打开第二个FIFO进行读取,因此可以打开写入块。