반응형
[FTZ] level10
level10 로 로그인한 후에
문제를 보면
공유 메모리를 알고 있어야 한다.
[공유메모리(Shared Memory)]
컴퓨터 환경에서 여러 프로그램이 동시에 접근할 수 있는 메모리.
IPC(Inter-Process Communication)의 일종.
- 데이터 공유 방식
1) 커널이 생성된 공유 메모리를 통해서 프로세스간 데이터 공유
2) 공유된 메모리 영역을 통해서 통신
3) 단순히 공유 메모리를 point 함으로써 프로세스에서 사용되는 메모리가 증가되지 않는다.
- Share memory를 사용하기 위해 필용한 헤더 및 함수
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, int size, int shmflg) // shared memory 생성 또는 가져오는 함수
void *shmat( int shmid, const void *shmaddr, int shmflg ) // process에 shared memory를 할당하는 함수
int shmdt( const void *shmaddr) // process에 할당된 shared memory를 분리하는 함수
int shmctl(int shmid, int cmd, struct shmid_ds *buf) // shared memory를 제어하는 함수
문제를 풀기 위해서
1. 공유메모리를 생성
2. 프로세스 자신의 메모리를 사용
$ ipcs 명령어를 입력하면 공유메모리를 확인할 수 있다.
- 공유 메모리를 사용하기 위한 코드
#include <sys/ipc.h>
#include <sys/shm.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main(){
int shmid;
int *num;
key_t key=7530;
void *memory_segment=NULL;
if((shmid=shmget(key,sizeof(int),IPC_CREAT|0666))==-1){
perror("shmget failed\n");
exit(0);
}
if((memory_segment=shmat(shmid,NULL,0))==(void*)-1){
perror("shmat failed\n");
exit(0);
}
printf("%s",memory_segment);
}
참고 : https://reakwon.tistory.com/96
gcc -o q1 q1.c
로 파일을 만든 후 실행을 하면된다.
반응형