使用 C++ 在同一系统上 2 个服务 运行 之间的通信

Communication between 2 Services running on same system using C++

在 C++ 中,我有 2 个服务(比如 windows 服务)在系统上 运行。显然两者都有对应的EXE A.EXe & B.EXE。

如果我想在这 2 个 windows 服务之间查询和接收一些数据,是否可以通过从 1 个服务传递结构指针来作为函数调用来完成,并让其他服务使用以下方法填充结构指针过去了。

A 和 B 的通用头文件:

struct Abc
    {
       int a;
    }

现在假设服务 A 通过其指针发送此结构对象,或通过调用服务 B.EXE 中的函数按引用传递。此函数调用是否可以跨 2 个服务工作?数据可以通过这种方式在 A 和 B 之间传输吗?

或者我需要像套接字这样的 IPC 机制。

Whats the best way for achieving the data transfer between 2 services running on same system

IPC 代表 "inter process communication"。您有两个服务(每个服务 运行 在自己的进程中)并且您希望在它们之间进行通信。您绝对 需要 IPC 机制。

您的选择是:

  • 套接字(在顶部分层 boos::asio 是个好主意)
  • 共享内存映射和信号事件(不要忘记使用互斥锁或类似的东西,不要忘记建立锁层次结构,以免发生死锁)。这将仅限于一台机器,但这可能是可以接受的。
  • DCOM(仅限 Windows,但看起来您无论如何都仅限于 Windows)。
  • 其他一些IPC包。

我个人的偏好是套接字,但任何一个都合适。