c语言实现 多进程 mmap实现共享内存 实例
时间: 2024-06-15 21:03:39 浏览: 13
C语言可以通过多进程和mmap来实现共享内存。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/wait.h>
int main() {
int *shared_memory;
int pid;
// 创建共享内存
shared_memory = mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
if (shared_memory == MAP_FAILED) {
perror("mmap");
exit(1);
}
// 创建子进程
pid = fork();
if (pid < 0) {
perror("fork");
exit(1);
}
if (pid == 0) {
// 子进程写入共享内存
*shared_memory = 123;
printf("子进程写入共享内存:%d\n", *shared_memory);
} else {
// 父进程等待子进程结束后读取共享内存
wait(NULL);
printf("父进程读取共享内存:%d\n", *shared_memory);
// 解除共享内存映射
if (munmap(shared_memory, sizeof(int)) == -1) {
perror("munmap");
exit(1);
}
}
return 0;
}
```
在这个示例中,我们使用了`mmap`函数创建了一个共享内存区域,大小为一个整数的大小。然后,我们使用`fork`函数创建了一个子进程。子进程将一个整数值写入共享内存,而父进程等待子进程结束后读取共享内存中的值。最后,我们使用`munmap`函数解除共享内存的映射。