跨进程的共享库

时间:2015-01-15 04:19:50

标签: c process shared-libraries

我想在下面构建类似的东西,一个链接到两个进程的共享库,当一个进程更新共享库中的内部结构时,另一个进程应该能够读取它。

在此之前,我想知道这是否可能?

或者共享库将是这两个不同进程的两个不同实例吗?

shared library:
---------------
 ------------- mod.c file -------
 struct p {
     uint pid,
 ...
 }

 mod_register ( uint pid, ...)
 {
  ... update struct p;
 }

mod.c& mod.h - > mod.so

 Process A{

   mod_register(pid, etcc.. );

 }

 Process B {

 .. read struct p;

 }

1 个答案:

答案 0 :(得分:0)

您需要创建的是共享内存部分。执行此操作的过程与系统无关。您的库将使用系统服务创建具有一些标识符的共享内存区域。这些创建了一系列具有该标识符的内存页面,可以映射到多个进程。然后,使用该库的每个进程将进入可以交换数据的相同共享存储区域。您必须实现自己的同步方法。

如果你希望内存是持久的(即没有进程访问它时仍然存在),那就是另一个独立于系统的任务。