글쓴이: 익명 사용자 / 작성시간: 토, 2002/09/28 - 10:39오후
1) 현재 사용중인 shared memory나 message queue상태를 확인하는 쉘프로
그램이 머지요??
2) message queue나 shared memory 모두 시스템내에서 유일한 식별번호
(key)가 필요하다고 알고 있는데요..
이 번호를 어떻게 정해서 사용해야 하나요??
현재 시스템내에서 사용중인지.. 아닌지 어떻게 미리 알고, 그 key를 정
할 수 있는 지 궁금합니다
Re: [질문] shared memory, message queue 사용시..
man ipcs
Re: [질문] shared memory, message queue 사용시..
쉐어드 메모리상태를 보는것은 아래와 같고
#ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x30010000 524288 shmman 666 8482080 0
0x30020000 622593 shmman 666 7706400 0
0x30030000 688130 shmman 666 69440 0
0x30040000 720899 shmman 666 836000 0
0x30090000 851972 shmman 666 504356 0
0x30050000 557061 shmman 666 59040 0
0x30070000 589830 shmman 666 59040 0
0x30060000 655367 shmman 666 78720 0
------ Semaphore Arrays --------
key semid owner perms nsems status
------ Message Queues --------
key msqid owner perms used-bytes messages
#ipcrm
usage ipcrm [shm | msg | sem] id
처럼 삭제하는 함수도 있습니다.
키에 관한것은 난수로 발생시켜서 생성한 다음
사용하기 전에 그 key로 조회해본 다음
이미 존재하지 않으면 사용해도 되고
(이미 존재한다면 그 키로 아이디를 조회했을때
id값이 나올테고 아니면 에러를 리턴하겠죠..)
또 그냥 상수처럼 일정한 값을 정해서 사용하면
되지요.. 저같은 경우엔 필수적인 것은 후자의 방법을 사용하고,
임시적인 ipc같은 경우엔 난수발생으로 키를 얻지요..
그리고 ipc프로그래밍의 예제가..
http//www.joinc.co.kr/modules.php?name=News&file=article&sid=32
이글을 보시면 도움이 될듯하고요..
http//www.ezdoum.com/stories.php?story=02/05/19/5694616
ipc관련 함수도 그냥 system에서 제공하는 함수를
사용하시는거보다 적당히 랩핑해서 사용하는게 좋습니다.
저는 아래와 같이 랩핑함수를 만들어서 사용합니다.
char *Attachshm(shmid,shmaddr,flag)
int Detachshm(vaddr)
int Getshmid(shmkey)
int Makeshm(shmkey,nbyte)
int Removeshm(shmkey)
답변 감사하구요 ^^ 답글보고 생긴 질문
다른 wrapping함수들은 알겠는데..
Getshmid(shmkey)는 어떻게 구현이 되져??
하는 일은 알겠는데, 안에서 shmget()함수를 호출한다면, size가 필요한데, size는 랩핑함수의 파라미터로 전달이 안되는데.. 특별한 방법이 있는지 궁금합니다.
댓글 달기