【问题标题】:What happenes if i open a FIFO for read and write in the same program?如果我在同一个程序中打开一个 FIFO 进行读写会发生什么?
【发布时间】:2019-06-11 14:32:22
【问题描述】:

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

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

【问题讨论】:

标签: named-pipes fifo


【解决方案1】:

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

在您的示例中,您有一个单线程 C 程序,它尝试一个接一个地打开两侧。那是行不通的。

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

【讨论】:

    猜你喜欢
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2014-06-08
    • 2016-11-08
    相关资源
    最近更新 更多