Is there a function like WaitNamedPipe or a way to realize this on C++/linux? (so the process is not blocking on the pipe for infinite time)
我的C ++程序中有一个命名管道。子进程在其中写入一个值,而父进程则在其中读取一个值。我由mkfifo创建了管道,并且所有操作都处于阻塞状态(在尝试打开以进行写入和v.v之前,无法将fifo打开以进行读取。
不幸的是,有时由于子进程运行的程序中的错误,我的子进程没有停止。修复此外部程序中的此错误不是我的任务,但我想确保父进程不会在阻塞的打开fifo调用中无限期停止,而是会在一段时间后继续运行(而不读取管道中的值) )。
所以我需要像WaitNamedPipe函数之类的东西。该函数将等待,直到超时间隔过去或指定的命名管道实例可用于连接。 http://ist.marshall.edu/ist480acp/namedpipes.html#WaitNamedPipe
当然,也可以使用另一种方法来实现此目的。我在父进程中尝试了一个循环,在该循环中,它总是尝试打开管道进行读取,然后在无法打开时进入睡眠状态。
这似乎没有任何效果,可能是因为父进程在第一次打开调用时阻塞了。
谢谢你的帮助。
您需要在
您可以使用无阻塞管道和带有超时的