如何为其他程序提供一个函数来调用它

How to provide a function for the other program to call it?

本文关键字:一个 函数 调用 其他 程序      更新时间:2023-10-16

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

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

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

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

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

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

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

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

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

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