C: mmap 失败:没有这样的设备
C: mmap failed: No such device
我正在尝试使用 c 命令创建内存映射
void* mem_map = mmap(NULL,
sizeof(serverData), //200000
PROT_READ | PROT_WRITE,
MAP_SHARED,
mem_map_fp,
0);
if(mem_map == MAP_FAILED){
bail_out(EXIT_FAILURE, "mmap");
}
程序可以编译,但是在尝试 运行 时会产生以下错误:
mmap: No such device
据我了解,代码没有任何问题,这让我怀疑原因可能更复杂一些。
我正在 运行宁此 linux 版本:
Linux ubuntu 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
我想你正在尝试分配内存,所以你应该使用 MAP_ANON
或 MAP_ANONYMOUS
标志,以及文件描述符的标准参数 -1
和 0
作为偏移量,像这样:
mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
我正在尝试使用 c 命令创建内存映射
void* mem_map = mmap(NULL,
sizeof(serverData), //200000
PROT_READ | PROT_WRITE,
MAP_SHARED,
mem_map_fp,
0);
if(mem_map == MAP_FAILED){
bail_out(EXIT_FAILURE, "mmap");
}
程序可以编译,但是在尝试 运行 时会产生以下错误:
mmap: No such device
据我了解,代码没有任何问题,这让我怀疑原因可能更复杂一些。 我正在 运行宁此 linux 版本:
Linux ubuntu 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
我想你正在尝试分配内存,所以你应该使用 MAP_ANON
或 MAP_ANONYMOUS
标志,以及文件描述符的标准参数 -1
和 0
作为偏移量,像这样:
mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);