【问题标题】:C: mmap failed: No such deviceC:mmap失败:没有这样的设备
【发布时间】:2016-05-29 18:56:30
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: c memory-mapping


    【解决方案1】:

    我想您正在尝试分配内存,因此您应该使用MAP_ANONMAP_ANONYMOUS 标志,以及用于文件描述符的标准参数-1 和用于偏移量的0,如下所示:

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

    【讨论】:

    • 不,目标是创建一个共享内存供多个进程使用,
    • 我猜你只需要在我的示例中将MAP_PRIVATE 更改为MAP_SHARED
    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多