2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level9 풀이과정
힌트를 보자...(맨날 똑같은 시작문구 ㅋㅋㅋ)
공유메모리... key_t의 값이 7530...
뭔지 모르겠지만, 일단 공유 메모리에 대해서 검색해보자.
공유 메모리에 대하여 : http://www.joinc.co.kr/w/Site/system_programing/IPC/SharedMemory
위의 그림과 링크를 참조해보면, 2가지 이상의 프로세스들이 공유하는 메모리공간을 말한다.
그리고 공유메모리에 접근을 하기 위해서는 고유의 공유메모리 key 를 통해서 접근가능해지며, 이 key값을 통해서 다른 여러개의 공유메모리들과 구분되어 질수 있다.
또, ipcs 명령어로 공유메모리 정보를 알 수 있으며,
int shmget(key_t key, int size, int shmflg)함수로 공유메모리 공간을 요청하고,
void *shmat( int shmid, const void *shmaddr, int shmflg )함수로 접근한다.
자 이제 문제 풀러 가자!
이제 key_t 값을 왜 알려줬는지 감이 올것이다.
먼저 ipcs명령어로 공유메모리 정보를 출력해보자.
"Shared Memory Segments" 부분에 key값에 "0x00001d6a"가 있다. 이를 10진수로 바꿔보았더니, 7530이라는 값이였다. shmget함수에 공유메모리의 크기값이 필요하므로 1028 byte라는 값도 기억해두자.
이제 공유메모리에 접근해서 공유메모리의 데이터 값을 읽는 코딩을 하면 될것 같다.