Adam Martin notesとして、オフセットはページサイズの倍数である必要があります。しかし、あなたはおそらく3つの別々のmmap
秒を必要としない、その単一のマッピングの異なるオフセットにできたばかりmmap
一度、使用ポインタ:
fd = shm_open(NAME, FLAGS, MODE);
ftruncate(fd, 1024);
addr0 = mmap(NULL, 1024, PROTS, FLAGS, fd, 0);
addr1 = (void*)((char*)addr0 + 50);
addr2 = (void*)((char*)addr1 + 100);
ちょうどのみすべての3つのポインタ、その時点で(addr0
にmunmap
を呼び出すことを忘れないでください無効になる)。
fd = shm_open(NAME, FLAGS, MODE);
ftruncate(fd, 1024);
addr0 = mmap(NULL, 50, PROTS, FLAGS, fd, 0);
char *const baseaddr1 = mmap(NULL, 150, PROTS, FLAGS, fd, 0);
char *const baseaddr2 = mmap(NULL, 1024, PROTS, FLAGS, fd, 0);
addr1 = (void*)(baseaddr1 + 50);
addr2 = (void*)(baseaddr2 + 150);
:また、同じ始点からあなた
mmap
三回は、個別に各ポインタを調整(各値を個別
munmap
にあなたを許すことになる、ちょうどオリジナルのポインタではなく、調整後のポインタでそうしてください)