FTZ-level10
공유메모리에 관한 문제인데 솔직히 이 문제는 검색을 이용하여 풀었습니다.
공유메모리에 대한 지식이 아무것도 없어서 찾는중 어느 분께서 정리를 잘 해놔주셔서 링크 첨부하겠습니다.
꼭 읽고 문제 푸시면 도움 되실 것 같아요
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/IPC/SharedMemory
http://gijung.blogspot.kr/2011/02/ipc-inter-process-communication-korean.html
IPC란 프로세스간의 통신이며 명령어 또한 프로세스간의 통신을 관리하는 명령이라고 생각하시면 편하실 것 같습니다.
#include <stdio.h>
#include <sys/shm.h> //공유메모리 관련 헤더 파일
#include <sys/ipc.h> //공유메모리 관련 헤더 파일
int main()
{
int key_t_value;
char start_ad;
key_t_value=shmget(7530, 1028, IPC_CREAT|0666);
//IPC_CREAT로 퍼미션 0666으로 설정
start_ad=shmat(key_t_value,NULL,0);
printf("%s",start_ad); //string으로 출력
return 0;
}
shmget은 커널에 공유메모리 공간을 요청하기 위해 호출하는 시스템 호출 함수이다.
첫번 째 인자 key는 여러개의 공유메모리 중 원하는 공유메모리에 접근하기 위한 key값이다. 따라서 key 값을 통해 선택적인 공유메모리에 접근이 가능하다.
두번 째 인자는 공유메모리의 최소 크기, 세번째 인자는 대부분 IPC_CREAT로 key를 이용하여 새로운 공유메모리 공간을 만든다.
리턴 값: 공유메모리에 접근할 수 있는 int형의 '식별자'
shmat은 shmget으로 공간을 할당 받았으면 지금의 프로세스가 공유메모리를 사용가능 하도록 하는 작업을 해준다.
리턴 값: 공유메모리의 시작번지
위의 링크와 문제의 힌트를 잘 읽어 보시고 공유메모리 관련 명령어를 잘 이해하시면 풀 수 있는 문제 같습니다.
저도 처음 접하는 개념이라 이 문제는 해결을 보고 말았습니다. 좋은 개념 배워가는 것 같습니다.
0 개의 댓글