K 개발자
공유 메모리 본문
공유 메모리 관련 함수
공유 메모리shared memory는 같은 메모리 공간을 두 개 이상의 프로세스가 공유하는 것이다.
같은 메모리 공간을 사용하므로 이를 통해 데이터를 주고받을 수 있다.
여러 프로세스가 메모리를 공유하고 있으므로 당연히 읽고 쓸 때 동기화가 필요하다.
공유 메모리를 동기화하지 않을 경우 데이터가 손실될 수 있다.
공유 메모리 생성 : shmget(2)
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
// key : IPC_PRIVATE 또는 ftok 함수로 생성한 키, size : 공유할 메모리의 크기, shmflg : 공유 메모리의 속성을 지정하는 플래그
공유 메모리 연결 : shmat(2)
#include <sys/types.h>
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
// shmid : shmget 함수로 생성한 공유 메모리 식별자, shmaddr : 공유 메모리를 연결할 주소, shmflg : 공유 메모리에 대한 읽기/쓰기 권한
공유 메모리 연결 해제 : shmdt(2)
#include <sys/types.h>
#include <sys/shm.h>
int shmdt(char *shmaddr);
// shmaddr : 연결을 해제할 공유 메모리의 시작 주소
공유 메모리 제어 : shmctl(2)
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
// shmid : shmget 함수로 생성한 공유 메모리 식별자, cmd : 수행할 제어 기능, buf : 제어 기능에 사용되는 공유 메모리 구조체의 주소
Comments