C++ 如何从子进程接收输出';无阻塞或极化的标准输出

C++ 如何从子进程接收输出';无阻塞或极化的标准输出,c++,windows,pipe,parent-child,C++,Windows,Pipe,Parent Child,我有一个长期运行的基于控制台的应用程序Sender,它使用非缓冲输出(如cout)将简单文本发送到标准输出。您有两个基本选项。选项1您已经尝试过,执行异步(也称为非阻塞)IO从子进程读/写。选项2是在接收方进程中创建一个单独的线程,该线程阻止从子进程读取/写入数据 我推荐第二种方法,我觉得更简单。当然,接下来的问题是如何将数据从helper线程获取到主线程。你需要使用锁,也许还有信号灯。但是,它应该比非阻塞IO更简单。我发现了几乎相同的wrt异步I/O。我通常通过发送消息将数据从工作线程发送到主

我有一个长期运行的基于控制台的应用程序
Sender
,它使用非缓冲输出(如
cout)将简单文本发送到标准输出。您有两个基本选项。选项1您已经尝试过,执行异步(也称为非阻塞)IO从子进程读/写。选项2是在接收方进程中创建一个单独的线程,该线程阻止从子进程读取/写入数据


我推荐第二种方法,我觉得更简单。当然,接下来的问题是如何将数据从helper线程获取到主线程。你需要使用锁,也许还有信号灯。但是,它应该比非阻塞IO更简单。

我发现了几乎相同的wrt异步I/O。我通常通过发送消息将数据从工作线程发送到主线程,从而避免了锁、信号量等的大部分麻烦。我在做这件事的时候已经成功地实现了选项2,比起使用非阻塞IO来麻烦要小得多。