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

时间:2012-03-22 09:27:07

标签: c++ linux system

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我的理解是你想要一个包装与队列通信的客户端API。

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

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

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

答案 2 :(得分:1)

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

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

在您提到的OP中,您希望队列中有一个进程处理它 - 可能使用共享内存和互斥锁将是一个简单的解决方案,其中有一个库可以访问这两个进程的队列。