多次运行的持久存储

时间:2011-05-12 10:29:24

标签: c++ shared-libraries daemon

我想知道在不使用输入输出到文件系统或外部数据库的情况下,拥有一个不会在几个执行时间(运行)中丢失其内容的存储容器的最佳解决方案。

假设我有一个存储整数的类foo()。从main()我想调用一个添加整数的方法,该类不会忘记它以前的内容。

//
// Data storage accross different runs
// This should go into the daemon process
//

#include<iostream>
#include<list>

using namespace std;

class foo {
public:
  foo(int add): add(add) {}
  void store(int i) {
    vec.push_back( i + add);
  }
private:
  list<int> vec;
  int       add;
};

主函数应该检查已经运行的守护进程 - 如果没有启动它。

//
// Main program. Should check whether daemon runs already, if not starts it.
//

void main(int argc, char *argv[]) {

  // if (daemon is not running)
  //  start daemon( some_number )

  // call daemon::add( atoi(argv[1]) );
}

如何使用共享库或守护程序进程做到最好?存储和调用程序位于同一个Linux主机上。

3 个答案:

答案 0 :(得分:0)

查看Linux Pipes以进行进程间通信。

http://linux.die.net/man/2/pipe

答案 1 :(得分:0)

命名管道是一种方式。如果你想要非阻塞,你可能想尝试消息队列路由。以下是其中一个系统调用http://linux.die.net/man/2/msgctl的链接,您可以查看其他来电。

答案 2 :(得分:0)