我将FIFO(命名管道)用于IPC。现在处理A呼叫
mkfifo(path)
open(path)
自然open()
将阻塞,直到文件被进程B写入为止。现在,我需要一种使FIFO无效的方法。因此,我致电
unlink(path)
现在,我希望任何阻塞的open
调用都将返回,但不会返回,并且我的进程会无限期挂起。
当FIFO取消链接时,如何解除对open
调用的阻止?我是否必须求助于O_NONBLOCK
?
打开用于写入的FIFO,unlink
,然后将其关闭。这将使进程A的open
成功执行,并且生成的FD将立即处于EOF位置。 (顺便说一句,如果您只想使unlink
返回,则open
是不必要的,但是清理仍然是一个好主意。)