미해결
리눅스 IPC 프로그래밍 - 이론과 실습
POSIX named semaphore 자원이 제대로 해지되지 못한 상태로 프로세스가 종료됐을 때 해당 semaphore 재사용 방법
안녕하세요. 커리어를 위해 해당 업무를 수강하는 개린이(개발자 어린이)입니다.구현 중 해결되지 못한 사항이 있어 질문 남깁니다.현재 구현하고 있는 상황은 두 개의 프로세스(A.exe, B.exe)가 임계영역에 접근하기 위해 posix named semaphore를 사용해 동시성을 지키고 있는 예제를 만들었습니다. named semaphore를 1개 만들어 두 개의 프로세스에 번갈아 소유권을 넘겨 임계영역에 접근하는 예제입니다. 따라서 두 프로세스의 코드는 동일합니다. 같은 이름으로 만들어진 named semaphore가 있다면 EEXIST 에러를 조건문으로 걸어 이미 생성된 named semaphore를 사용하도록 예외처리를 해놓은 상태입니다.여기서 하나의 프로세스(B.exe)가 named semaphore의 소유권을 가지고 있던 상태에서 갑작스러운 상황에 비정상적으로 종료된다면, 즉 named semaphore의 자원을 정상적으로 sem_post(sem) 하지 못한 상태에서 프로세스가 종료되는 상황에서 다시 해당 프로세스를 동작시켰을 때, 기존에 사용됐던 named semaphore가 정상 동작하지 않는 것을 확인했습니다. 제가 생각했을 땐 비정상적으로 프로세스가 종료되면서 메모리 어딘가에 해당 named semaphore 주소값이 있고 그 주소값을 가져오지 못해 생기는 메모리 낭비의 영역인 것 같습니다.이런 경우에, 프로세스가 비정상적으로 종료된 경우에 같은이름으로 선언된 naemd semaphore를 재사용하는 방법이나 예외처리나 파라미터 flag 값들이 있다면 지식을 나눠주시면 감사하겠습니다.