2015-03-13 199 views
2

我对linux应用程序开发非常陌生。Linux共享库

我有两个库共享库libGetData.so和libProcessData.so。

我在Linux PC上运行两个不同的C++应用程序A和B,并在这两个应用程序中使用这两个库。

我在这两个库中都有很少的静态变量。

但是,当我从应用A.它libGetData.so库设置一个静态变量没有在应用程序B.反映

我的目标是,如果我在任何应用程序,如果使用共享库我设置任何该库中的静态变量。同样的事情应该反映在使用相同库的其他应用程序上。

请帮我...

+2

只有库代码是共享的,而不是可变内存。每个进程都有自己的(虚拟化)内存块来运行库代码。 – Galik 2015-03-13 14:41:35

回答

5

但是,当我设置从应用A.它libGetData.so库中的静态变量没有在应用程序B.

正确反映。

我的目标是如果我在任何应用程序中使用共享库,并且如果我在该库中设置任何静态变量。同样的事情应该反映在使用相同库的其他应用程序上。

不,这不是共享库的工作方式。

共享库允许库的不变部分被多个进程共享,但这纯粹是OS级别的实现细节。他们做而不是意味着进程共享一个地址空间。不同进程中的变量是不同的,不共享。

为了让进程相互通信,他们需要使用某种形式的管道,套接字或共享内存(与共享库无关)等Inter-Process Communication (IPC)