2016-05-29 50 views
2

我试图创建用c的存储器映射命令C:MMAP失败:没有这样的设备

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 

回答

6

我想你想分配内存,所以你应该使用MAP_ANONMAP_ANONYMOUS标志与标准参数一起-1的文件描述符和0的偏移,像这样:

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

不,我们的目标是创建一个共享的内存被多个进程使用, – nitowa

+2

我猜你只需要改变MAP_PRIVATE'''要在MAP_SHARED'我的例子呢。 – sputnik

+0

这正是缺少的,做得好! – nitowa

相关问题