【问题标题】:Linux Shared LibraryLinux 共享库
【发布时间】:2015-03-13 14:37:01
【问题描述】:

我对 linux 应用程序开发非常陌生。

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

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

两个库中的静态变量都很少。

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

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

请帮帮我...

【问题讨论】:

  • 只共享库代码,不共享变量内存。每个进程都有自己的一块(虚拟化)RAM 来运行库代码。

标签: c++ linux shared-libraries


【解决方案1】:

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

正确。

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

不,共享库不是这样工作的。

共享库允许库的不变部分由多个进程共享,但这纯粹是操作系统级别的实现细节。它们确实意味着进程共享一个地址空间。不同进程中的变量是不同的,不共享的。

为了让进程进行通信,它们需要使用某种形式的Inter-Process Communication (IPC),例如管道、套接字或共享内存(与共享库无关)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2013-10-25
    • 1970-01-01
    相关资源
    最近更新 更多