IPC제거를 할수 있는 방법에 대한
글쓴이: 익명 사용자 / 작성시간: 화, 2003/06/24 - 1:25오전
지저분한 코드가 있었습니다.
그런데 그것은 상관없었습니다.
중요한것은 이 코드가 IPC( 그중에 메세지큐)를 사용하는것이었습니다.
왜 중요하냐구요?
이 코드가 종료될때 이것을 없애주지 않고 종료한다는데서 문제의 발단은 심각해졌습니다.
제가 이것의 소스를 수정할수 없다는 것도 보탬이 되어 문제는 더욱 커졌지요.
지금은 다른거 쓰고 있지만 어쨌건 다음에 또 이런문제가 나오면 해결하기 위한
방법을 여쭙고자 합니다. 즉, 정리해서 말하자면.
어떤 프로그램이 Key를 랜덤하게 생성하여 메세지큐를 사용합니다. 그리고 그것을 삭제하지 않고 종료합니다. 결국 몇번 실행하다보면 메세지큐의 자원이 고갈됩니다. 그 코드의 소스수정은 불가피하고 외부에서 이것을 지워야 합니다. 하지만 이곳의 디스크 용량은 한정적입니다. 때문에 msgctl을 복사할만한 공간은 없습니다. 다행히도 제가 만든거 하나에 코드를 삽입할만한 코딱지가 보입니다. 그렇다면 어떻게 이를 해결할까요?
문제는 간단한데 설명하기 무지 복잡하구만 에휴~
Forums:
ipcs 명령어로 현재 시스템에서 할당된 ipc 객체를 확인한 후 ipc
ipcs 명령어로 현재 시스템에서 할당된 ipc 객체를 확인한 후 ipcrm 명령어로 해당 객체를 삭제합니다. 제거할 시에 user는 ipc 객체에 대한 permission을 가져야 합니다(혹은 root user).
# ipcs -q
Message Queue
T ID KEY MODE OWNER GROUP
...
q 5 0x41fd02ea --rw------- tester user
# ipcrm -q 5
댓글 달기