FTZ Level 10
hint๋ ๋ค์๊ณผ ๊ฐ๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋, ๋ค์์ ํ๋ก์ธ์ค์์ ๋์์ ์ ๊ทผ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ์ด๋ค.
C์ธ์ด์๋ ์ด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฑํ๋ ํจ์๋ก shmget์ด ์๋ค.
key_t๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ตฌ๋ณํ๋ ์๋ณ ๋ฒํธ์ด๊ธฐ ๋๋ฌธ์ shmget์ ์ด์ฉํ ์ ์๋ค.
๋จผ์ ipcs ๋ช ๋ น์ด๋ฅผ ํตํด ์์คํ ์์ ์ฌ์ฉ ์ค์ธ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ธ๊ทธ๋จผํธ๋ฅผ ํ์ธํ๋ค.
0x00001d6a๋ผ๋ key๊ฐ ์๊ณ , ์ด๋ 10์ง์๋ก ๋ณํํ๋ฉด 7530์ด๋ค. ํํธ์์ ์ฃผ์ด์ง key_t์ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ ๊ทผํด์ผ ํ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ 0x00001d6a์ด๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ํด ๋ค์๊ณผ ๊ฐ์ ์์ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํ๋ค.
#include <stdio.h>
#include <stdlib.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <sys/types.h>
int main() {
int shmid; // ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ id๋ฅผ ์ ์ฅํ ๋ณ์ ์ ์ธ
char* shmdata; // charํ ํฌ์ธํฐ ์ ์ธ
shmid = shmget(7530, 1028, 0666); // key๊ฐ 7530, ์ฉ๋์ด 1028๋ฐ์ดํธ, ๊ถํ์ด 0666์ธ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฑ
shmdata = shmat(shmid, NULL, 0); // ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ธ๊ทธ๋จผํธ์ ์ก์ธ์ค
printf("%s\n", shmdata); // ๋ด์ฉ ์ถ๋ ฅ
shmdt(shmdata); // ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ถ๋ฆฌ
return 0;
}
์ฐธ๊ณ ๋ก, ์ด ์์ค์์ charํ ํฌ์ธํฐ๋ฅผ ์ ์ธํ๋ ์ด์ ๋ shmat ํจ์๊ฐ shmid์ ๋ํ ์ฃผ์๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ํฌ์ธํฐ์ ์ฃผ์๋ฅผ ์ ์ฅํ๊ณ printf ํจ์์์ %s๋ฅผ ์ฌ์ฉํด ํด๋น ์ฃผ์์ ์๋ ๋ฌธ์์ด์ ์ถ๋ ฅํ๊ฒ ํ๊ธฐ ์ํจ์ด๋ค.
level11์ ํจ์ค์๋๊ฐ ๋์๋ค.
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(FTZ Level 10), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@bin3635/FTZ-Level-10์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค