fifo:解除阻止在unlink()上打开

问题描述 投票:0回答:1

我将FIFO(命名管道)用于IPC。现在处理A呼叫

  • mkfifo(path)
  • open(path)

自然open()将阻塞,直到文件被进程B写入为止。现在,我需要一种使FIFO无效的方法。因此,我致电

  • unlink(path)

现在,我希望任何阻塞的open调用都将返回,但不会返回,并且我的进程会无限期挂起。

当FIFO取消链接时,如何解除对open调用的阻止?我是否必须求助于O_NONBLOCK

c macos posix mkfifo
1个回答
0
投票

打开用于写入的FIFO,unlink,然后将其关闭。这将使进程A的open成功执行,并且生成的FD将立即处于EOF位置。 (顺便说一句,如果您只想使unlink返回,则open是不必要的,但是清理仍然是一个好主意。)

© www.soinside.com 2019 - 2024. All rights reserved.