2016-06-12 2 views
0

모두 C 코드에서 libA.so와 libB.so 두 라이브러리를로드 할 수있는 하나의 리눅스 Gnome 프로세스가 있습니다.리눅스 프로세스 : 두 라이브러리 사이에서 변수를 동적으로 공유하기

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입니다.

관련 문제