如何从Windows中的多个管道读取同一个线程

Mih*_*yan 1 c c++ winapi pipe

在我的程序中,我有几个连接到stdout和stderr子进程流的管道(即在主进程中我正在从这些流中读取).但是,如果没有任何东西可以从其中一个中读取,我的程序就会挂起.有没有办法解决这个问题不使用线程.此外,如果在xmsecs 期间没有任何内容可读,我希望所有子进程都被杀死.

在unix中,select()+ non_blocking read解决了这两个问题.但是窗户怎么样?

Log*_*ldo 6

您可以在Windows中使用类似的方法.使用OVERLAPPED结构,您可以对管道发出异步I/O. 然后在关联的事件句柄上使用WaitForMultipleObjects并超时(这是选择模拟).见对选项的概述.