代码之家  ›  专栏  ›  技术社区  ›  John Dibling

如何接收子进程STDOUT的输出而不阻塞或极化

  •  0
  • John Dibling  · 技术社区  · 14 年前

    我有一个长期运行的基于控制台的应用程序 Sender cout << "Message" << flush() . 我想创建一个基于MFC对话框的应用程序(名为 Receiver )开始了 发件人 可以读取它的输出。 接收器 还应该能够检测到 已经死了,或者可以杀人 发件人 发件人 对…一无所知 Reciever ,我不能改变 发件人 的代码。

    发件人 I've posted a separate thread

    我的问题是,从总体架构的角度来说,我应该如何做到这一点?我不想 的主循环来阻止或轮询,但应该使用 Wait function

    1 回复  |  直到 7 年前
        1
  •  2
  •   Keith Randall    14 年前

    你有两个基本的选择。选项1您已经尝试过,使用异步(也称为非阻塞)IO从子进程读/写。选项2是在接收进程中创建一个单独的线程,该线程阻止从子进程读取/写入数据。