C ++下的跨进程交互

请帮忙,如何组织过程 – 过程数据交换(在Windows中,如果有的话)?

我有process1.exe用几个命令行参数调用process1.exe 。 我想从process1跟踪process1 (比如int值)。 它( int值)可以从process1永久访问或每个X ms – 无关紧要。

将有用的任何解决scheme:WinApi或Qt。

谢谢大家! 所有的答案是非常有用的! :) 非常感谢!!

OTOH:

  • 标准输入/标准输出重定向
  • 命名管道(CreateNamedPipe)
  • 匿名管道(CreatePipe)
  • 套接字(套接字,连接,绑定)
  • 共享内存(CreateFileMapping,MapViewOfFile)
  • Windows消息(例如WM_APP)

选择一个 – Windows消息或共享内存可能是更容易的。

这里有很多选择:

  1. 你可以重新定向process2的标准输出,并让它输出更新,但是通常你喜欢
  2. 如果stdout用于别的东西,你可以在进程之间使用命名管道
  3. 您也可以使用命名的共享内存 ,这将需要更少的开销,可能更容易实现(缺点是,您可能还需要进行跨进程同步)
  4. 如果process1正在运行消息泵,则还可以使用正常的Windows消息(请参阅WM_COPYDATA)

有几种方法:

  • 套接字
  • 消息
  • 共享内存(文件)

问题是Process2将会广播,Process1将会听取。 Process1需要知道Process2何时完成,并且可能完成百分比。

我相信套接字将是更好的路线,但这取决于应用程序,开发时间表和概念的熟悉程度。

您可以简单地发送消息与Windows Api(SendMessage)。

目前所提出的方案中有一个明显的漏洞是COM。 我期待通常的“COM是废话”的反应,但根据我的经验,情况并非如此。