如果我在同一个程序中打开一个 FIFO 进行读写,会发生什么情况?

What happenes if i open a FIFO for read and write in the same program?

我开始学习管道和 FIFO,但我不明白这个 situation.Why 后台到底发生了什么?控制台中没有打印任何内容?没有其他进程打开 "abc" FIFO

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

正如 所解释的,当您打开一个 FIFO 时,打开调用将阻塞,直到系统在同一 FIFO 的另一端获得相应的打开。

在您的示例中,您有一个 single-threaded C 程序试图依次打开两侧。那行不通的。

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