假设我使用C ++程序在Linux中维护一个队列,并对队列中的数据做一些事情,现在我想在后台运行它并提供一个函数,因此其他程序可以简单地调用它将数据拉入我的队列 最好的方法是什么?
答案 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中,您希望队列中有一个进程处理它 - 可能使用共享内存和互斥锁将是一个简单的解决方案,其中有一个库可以访问这两个进程的队列。