C:mmap失败:没有这样的设备

C:mmap失败:没有这样的设备,c,memory-mapping,C,Memory Mapping,我正在尝试使用c命令创建内存映射 void* mem_map = mmap(NULL, sizeof(serverData), //200000 PROT_READ | PROT_WRITE, MAP_SHARED, mem_map_fp, 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\u ANON
MAP\u ANONYMOUS
标志,以及标准参数
-1
作为文件描述符,
0
作为偏移量,如下所示:

mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);

不,目标是创建一个供多个进程使用的共享内存,我想在我的示例中,您只需要将
MAP\u PRIVATE
更改为
MAP\u shared