MAP_SHARED mmap的示例
时间: 2023-10-11 17:12:00 浏览: 72
下面是一个使用 `mmap()` 函数创建共享内存的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/mman.h>
#define FILE_LENGTH 0x1000
int main(int argc, char* const argv[]) {
int fd, count;
void* file_memory;
// 打开文件
fd = open(argv[1], O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
// 调整文件大小
lseek(fd, FILE_LENGTH+1, SEEK_SET);
write(fd, "", 1);
lseek(fd, 0, SEEK_SET);
// 映射文件到内存
file_memory = mmap(NULL, FILE_LENGTH, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
// 使用映射的内存
for (count = 0; count < 60; ++count) {
sprintf((char*)file_memory, "%d\n", count);
sleep(1);
}
// 解除映射
munmap(file_memory, FILE_LENGTH);
return 0;
}
```
该程序打开一个文件,将其调整为指定大小,然后将其映射到进程空间中。它在映射的内存中写入数字并等待一秒钟,然后再次写入另一个数字。最后,它解除映射并退出。可以同时运行多个这样的程序来共享内存。
阅读全文