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



我开始学习管道和FIFO,但我不明白在这种情况下后台会发生什么。为什么控制台中不打印任何内容?没有其他进程打开"abc"FIFO

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

正如 https://stackoverflow.com/a/23435538/139985 所解释的,当您打开FIFO时,打开的调用将阻塞,直到系统在同一FIFO的另一端获得相应的打开。

在您的示例中,您有一个单线程 C 程序,该程序尝试一个接一个地打开两端。 那行不通。 程序将锁定

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

但是,使用FIFO在同一应用程序中的两个线程之间进行通信(至少可以说)效率低下。

相关内容

最新更新