4

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

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

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

4

2 回答 2

5

我刚刚做对了:)

我必须让打开进程等到其他进程打开 FIFO 进行读取(这将是一个阻塞的读取).. 通过在写入过程中进行睡眠,我将确保其他进程将打开以进行读取..

于 2010-12-30T11:10:31.177 回答
0

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

于 2010-12-30T10:59:29.973 回答