linux进程localstorage

时间:2011-03-10 01:03:28

标签: linux process local-storage

存储与流程关联的值的最佳linux方式是什么。

我们有一个动态加载和卸载的库。在运行时,库将创建一个大型数据结构....大约1GB。卸载库时,它会将该数据结构留在进程的内存中。当进程重新加载库时,我们需要库能够找到该数据结构的地址。我们这样做是因为我们的服务器软件更新是实时发生的,并且无法承担创建该数据结构的时间。我们还会在更新失败时取消更新,这样我们就可以快速回退到以前的版本。我们无法更改调用应用程序的代码,因此它可以传递给我们数据结构的地址。

pthreads具有线程本地存储。我正在寻找类似于线程本地存储的东西,除了它将是进程本地存储。我不想在临时目录中创建文件,因为我们的服务器会不时崩溃并重新启动....我不想处理必须清理死过程数据文件。我正在查看/proc/ directory,这是理想的,因为它会在进程终止后消失,但我不确定proc_fs.h中的函数是否应该从用户土地应用程序中调用。

谢谢!

1 个答案:

答案 0 :(得分:2)

加载库的可执行文件不能只为你保留这个,并在加载库后传递它吗?

无论哪种方式,一些替代方案是:

  • 扫描/proc/self/maps以获取数据 - 具体取决于您的分配方式。
  • 打开一个文件,将dup2()打开为“magic”fd,然后将该状态数据写入其中。它会在关闭时完全消失。
  • 加载一个小型库,其唯一目的是为您存储此地址。重新加载后再次dlopen(),并询问地址。
  • 设置/读取环境变量

就个人而言,我会选择环境变量。