[완료]shmat() 반환한 메모리 주소가 bad access memory address인경우
글쓴이: prodigyrcn / 작성시간: 월, 2007/09/03 - 11:40오전
안녕하세요
지금 공유 메모리를 이용하여 프로그래밍을 하고 있는데요.
여러 프로세스에서 같은 키를 이용하여 공유메모리에 접근하여 사용하는데
유독 하나의 프로세스에서만 shmat()을 수행하면 공유메모리에 접근을
할 수가 없는 현상이 발생합니다.
shmat()이 리턴하는 가상 메모리 주소가 다른 프로세스들에서는
0xc0000000000004ff6000이고
참조할 수 없는 프로세스에서는
0x4ff6000으로 나오는 것을 확인했습니다.
퍼미션도 0666으로 동일하고요.
동일한 키와 id에 대한 가상메모리를 반환해주는 shmat()의 주소가
접근할 수 없는 메모리 주소일 경우 해결방법이 없는지 궁금합니다.
답변 부탁드립니다.
Forums:
컴파일할 때 shmat가
컴파일할 때 shmat가 선언된 header file을 include하셨나요? include 안하면 함수가 int 형을 돌려준다고 컴파일러가 간주해 버려서 포인터 상위 바이트가 날아갈 수 있습니다.
jick 님 감사합니다.
답변 감사합니다.
아...처음부터 제가 진행한 프로젝트가 아니라..
생각도 못했는데..
역시나 sys/shm.h
가 include 돼어 있지 않았네요..^^;;
답답했었는데. 덕분에 해결했습니다.
고맙습니다. 수고하세요.
댓글 달기