2015-03-13 249 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)