我的 C++ 程序中有一个命名管道。子进程在其中写入一个值,父进程读取它。我通过 mkfifo 创建了管道,并且所有操作都被阻塞(在尝试打开进行写入之前无法打开 fifo 进行读取,不幸的是,有时我的子进程不会因为子进程运行的程序中的错误而停止。这不是我的在此外部程序中修复此错误的任务,但我想确保父进程不会在阻塞的打开 fifo 调用上无限停止,而是在一段时间后继续(不读取管道中的值)。
所以我需要它类似于 WaitNamedPipe 函数。此函数一直等待,直到超时间隔过去或指定命名管道的实例可用于连接。http://ist.marshall.edu/ist480acp/namedpipes.html#WaitNamedPipe
当然,另一种实现这一点的方法也有效。我在父进程中尝试了一个循环,它总是尝试打开管道进行读取,然后在无法打开时休眠。这似乎没有效果,可能是因为父进程在第一次打开调用时被阻塞了。
谢谢你的帮助。