2016-06-12 9 views
0

すべてのCコードでは、libA.soとlibB.soの2つのライブラリをロードすることができる1つのLinux Gnomeプロセスがあります。Linuxプロセス:2つのライブラリ間で変数を動的に共有する

libAはグローバル変数int varAをエクスポートする必要があります。

libBは、プロセスにlibAが存在する場合にのみ、varAにアクセスする必要があります。

libBがLIBAとリンクしてはならない:

は、どのように私は次の制約でそれを行うことができます。また、プロセスがlibBのみをロードし、libAには決して触れない可能性があります。プロセスのソースコードにコードは存在しないように、プロセスを制御しません。 libBのコードだけが許可されています。プロセスにlibAが存在するかどうかを確認する必要があります。その場合、varAにアクセスする必要があります。 libAが存在しない場合、libBはvarAにアクセスできないことを認識する必要があります。

私はg_module_open/g_module_symbolを使用することを考えていましたが、私はそれが望ましくないlibAをロードすると思います。 libAが存在する場合、プログラムでlibBをチェックして、その場合にのみvarAにアクセスできますか?

答えて

0

dl_iterate_phdrとdlsymは、この問題を解決するために使用するAPIです。

関連する問題