멀티 프로세스끼리는 멀티쓰레드처럼 직접 변수에 접근하기 어렵기 때문에 공유 메모리 등과 같은 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;
}
|