如果我在同一程序中打开一个FIFO进行读写会怎样?

时间:2019-06-11 14:32:22

标签: named-pipes fifo

我开始学习管道和FIFO,但我不完全了解这种情况下后台会发生什么。为什么控制台中什么都没打印?没有其他进程打开“ abc” FIFO

`int r,w,n=7;
r=open("abc",O_RDONLY);
n--;
w=open("abc",O_WRONLY);
n--;
printf("%d",n);`

1 个答案:

答案 0 :(得分:0)

https://stackoverflow.com/a/23435538/139985所述,当您打开FIFO时,open调用将阻塞,直到系统在同一FIFO的另一侧获得相应的打开为止。

在您的示例中,您有一个单线程C程序,它试图一个接一个地打开双方。那行不通。

但是,如果您将程序重新设计为使用两个线程并在不同的线程中打开FIFO的读取和写入端,那应该可以工作。一个线程将阻塞open,直到另一个线程调用open