2016-05-29 22 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 

私の理解によれば、その理由がもう少し複雑かもしれないと疑わせるコードには何も問題はありません。私はあなたがオフセット用のファイルディスクリプタと0ため-1標準の引数とともに、MAP_ANONまたはMAP_ANONYMOUSフラグを使用する必要がありますので、あなたは、メモリを割り当てるしようとしていると仮定し

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

: 私はこのLinuxのバージョンを実行していますよ、そのよう:

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

いいえ、目標は複数のプロセスが使用する共有メモリを作成することで、 – nitowa

+2

私はあなただけで、その後、私の例では、 'MAP_SHARED'に' MAP_PRIVATE'を変更する必要があると思います。 – sputnik

+0

これはまさに行方不明で、うまくいった! – nitowa

関連する問題