小编use*_*423的帖子

相当于 Windows 上的 select for Pipes

我需要阻塞,直到我的管道之一有数据要读取。

我尝试过 WaitForMultipleObjects 但它只是立即返回说其中一个管道有数据。管道上的后续 ReadFile 会阻塞。

我无法使用 PeekNamedPipe,因为我需要阻塞直到数据可用,并且在带有睡眠的循环中进行查看会因睡眠而导致延迟反应。

这段代码是跨平台的,在 Linux 上一切都工作得很好,因为我可以在一组 fifo fd 上使用 Select,然后从 select 返回时准备好的那个中读取,但是在 Windows 上似乎没有任何等效的东西。

我看到很多人说你必须使用读/写的重叠操作,但这是否需要我循环并尝试读取每个管道?

是否没有任何单个阻塞操作会阻塞直到其中一个管道中有数据为止?

c++ winapi pipe

2
推荐指数
1
解决办法
2737
查看次数

标签 统计

c++ ×1

pipe ×1

winapi ×1