【问题标题】:How to provide a function for the other program to call it?如何提供一个函数让其他程序调用它?
【发布时间】:2012-03-22 09:27:07
【问题描述】:

假设我在Linux中使用一个C++程序来维护一个队列,并对队列中的数据做一些事情,现在我想在后台运行它并提供一个函数,因此其他程序可以简单地调用它来将数据拉入我的队列。
最好的方法是什么?

【问题讨论】:

    标签: c++ linux system


    【解决方案1】:

    如果你的程序作为两个独立的进程运行,你不能直接调用其他进程中的函数,你需要一个进程间通信机制(IPC)来在两个进程之间进行通信。

    通常按如下方式进行:
    您想要与之通信的进程提供了一个客户端库,想要与该进程通信的进程或应用程序链接到该客户端库。此客户端库提供简单的函数调用,您的调用进程/应用程序可以直接调用。客户端库实现了与远程进程通信所需的 IPC 机制。

    【讨论】:

      【解决方案2】:

      据我了解,您需要一个封装与队列通信的客户端 API。

      您需要创建一个单独的库来包含和导出 API,并将其包含在想要使用它的程序中。

      class Communicator
      {
      public:
          bool putData(Data* data);
          bool getData(Data*& data);
      };
      

      Communicator 的实现通过 IPC 与队列进行实际通信,但您将该层抽象出来。

      【讨论】:

        【解决方案3】:

        有多种机制可以做到这一点,从创建自己的服务器到使用 IPC、RPC、CORBA 等等。

        至于最好,这取决于多种因素。

        在您提到的 OP 中,您想要一个由一个进程处理它的队列 - 也许使用共享内存和互斥锁将是一个简单的解决方案,使用一个库来访问两个进程的队列。

        【讨论】:

          猜你喜欢
          • 2022-06-14
          • 1970-01-01
          • 1970-01-01
          • 2016-01-19
          • 2021-11-21
          • 1970-01-01
          • 1970-01-01
          • 2013-01-31
          • 1970-01-01
          相关资源
          最近更新 更多