멀티 프로세스끼리 간단한 데이터 공유 방법 – mmap()

티 프로세스끼리는 멀티쓰레드처럼 직접 변수에 접근하기 어렵기 때문에 공유 메모리 등과 같은 IPC를 이용해서 데이터를 주고 받는데, 복잡하고 다양한 기능이 필요없다면 메모리맵을 통해 서로 간단히 데이터를 공유 할 수 있다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/mman.h>

int main(void) {
    void *p;

    p = mmap(0, 1024, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);
    if ( p == MAP_FAILED ) {
        puts("mmap() error");
        exit(1);
    }

    sleep(10);

    if ( munmap(p, 1024) ) {
        puts("munmap() error");
        exit(1);
    }

    return 0;
}
updatedupdated2021-01-042021-01-04