유닉스 운영체제에서 공유 메모리를 사용해 프로세스간 통신을 구현하던 도중 몇 날 며칠을 고민해도 도저히 해결이 안되는 문제가 있어 이렇게 질문 드리게 되었습니다.
현재 유닉스 환경에서 하나의 서버 프로세스와 두개의 클라이언트 프로세스(편의상 클라이언트1, 클라이언트2라고 하겠습니다)가 존재하고 서버 프로세스는 두 번의 fork() 함수 호출을 통해 두 개의 자식 프로세스(편의상 자식 프로세스1, 자식 프로세스2라고 하겠습니다)를 생성합니다.
자식 프로세스 1은 클라이언트1과 공유 메모리를 통해 통신하고, 자식 프로세스 2는 클라이언트2와 공유 메모리를 통해 통신하며 이 두 개의 공유 메모리는 서로 다른 키값을 지정하여 <자식 프로세스1, 클라이언트1>과 <자식 프로세스2, 클라이언트2>는 서로 다른 공유 메모리를 통해 통신하는 상황입니다. 더불어 클라이언트와 자식 프로세스 간에 공유 메모리의 접근을 동기화하기 위해 서로 다른 이름의 Named 세마포어 2개를 사용하고 있습니다.
하나의 Base 라이브러리를 서로 다른 라이브러리에서 정적으로 링크해서 사용중입니다.
문제는 이러한 라이브러리들이 뭉쳤을때, 각자의 라이브러리 내의 Base 라이브러리를 참조하는 것이 아니라, 링크 순서에 따라서 참조하는 라이브러리가 다릅니다.
원하는 건 자기자신의 Base 라이브러리를 참조하고 싶은데, 어떻게 해야될지 잘 모르겠습니다.
검색어라도 알면 찾아볼텐데 검색어도 잘 모르겠습니다.
설명이 어려워서 이미지를 첨부합니다.
현재 함수 호출
MidFunc에서 main에서 포함한 BaseFunc를 호출해버린다...
원하는 함수 호출
MidFunc에서는 자신의 BaseFunc를 호출하고,
main 에서는 자신의 BaseFunc를 호출한다.