我有一个与进程间通信相关的问题,希望熟悉此类技术的人能够回答。
情况
- 我有一个程序(程序A),我可以在其中添加一些代码,但非常有限。这是生成大量数据的主要程序。
- 数据格式受限,因此我想创建第二个程序(程序B),因此需要从A获取数据到B,有时甚至需要使A运行一些没有返回值的函数。
- 我知道命名管道,但我觉得它们可能会很笨重?虽然我有以下担忧(可能是没有根据的):
- 数据流 => 转换为二进制 -> 将数据放入内存 -> 服务器读取 -> 转换为字符串 -> 通过可能的 switch 语句确定所请求的内容 -> 获取请求内容 -> 转换为二进制 -> 放入内存 -> 客户端读取并转换为字符串 / 一些可接受的格式。
- 必须在两侧使用基本的 switch 语句,如果您想要除字符串以外的其他信息格式,则需要考虑此问题。
- 一个消息可能必须等待另一个消息完成,因此在同时进行大量调用时可能会变慢?虽然我不确定。
- 其他进程间通信方法可能存在相同的问题。
我认为更好的解决方案是创建一个“对象” - 类,并在程序之间共享对象内存地址,从而在理论上“合并”A和B:
- 没有编码和解码问题等问题
- 通过调用函数简单请求/调用数据。
- 这个函数返回正确类型,无需确定正确类型(即bool / int / string / double等)
我明白这也有几个问题,例如如果另一个程序访问它,则对象可能会从内存位置中删除。
问题
- 如何解决这些问题:
- 在C++中是否有一种调用选项,可以允许我从内存地址中读写数据?目前:
- 我可以在A和B之间访问同一个对象,但我无法写入/读取,因为那样会引发异常。所以我是否可以通过简单的调用来读/写此对象?
- 我知道WriteProcessMemory函数-但这不是我想要的-即我不一定想改变内存值,只是从B访问数据/调用A执行的操作。
- 有没有简单易行的方法?我知道有一个叫做Boost的东西,但对此一无所知-这是我的最佳选择吗?->即我应该将其作为最佳解决方案来调查吗?
非常感谢您提前对此问题的任何建议。