공유라이브러리의 데이터 공유 방법에 대해서 질문 드립니다

partita의 이미지


안녕하세요.
gnu환경에서 개발한지 얼마되지 않은 초보입니다.

요즘 공유라이브러리를 하나 만들고 있는데요,
공유라이브러리에서 생성하는 자료구조를 몇몇 어플리케이션에서
참조하고 싶은데 그게 잘 안되서 질문 드려요.

최초로 실행되는 어플리케이션이 공유라이브러리를 링크하면서,
라이브러리 내부에 전역변수를 체크해서 자료구조를 메모리에 올리고,
(전역 변수는 할당되는 메모리 포인터로서 NULL로 초기화되구요)
이후부터 이 라이브러리를 사용하는 어플리케이션은 참조만 하도록 하고 싶거든요.

공유라이브러리에서 전역 변수를 공유할 수 있는 방법이 __attribute__(section, "section명")
이렇게 사용할 수 있다고 해서 사용해 봤는데, 전역적으로 공유가 안되더라구요.
원래 되는게 맞는건지도 모르겠고, 이방법이 안되다면 다른 방법으로 할 수 있는 방법이 없을까요?

공유 메모리도 된다는데 아직 해보지는 않았구요, 가능하면 간단한 방법으로 되면 좋겠는데요..
경험 있으신 분들 조언을 기다립니다. ^^

체스맨의 이미지

여러 프로세스가 참조하는 메모리라면, 공유메모리를 사용하는 게 정석입니다. 상황에 따라 동기화가 필요할 수 있습니다.

Orion Project : http://orionids.org

IsExist의 이미지

공유라이브러리는 코드를 공유한다는 말이지 데이타까지 공유 한다는 개념이 아닙니다.
서로 다른 프로세스가 공유 라이브러리르 이용하여 데이타를 공유하고자 할 경우
IPC 를 사용하여 공유 해야 합니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치