在使用共享內存實現進程間通信的時候,我們有時候不想借助文件來實現,也就是通過匿名映射區
Linux中,我們可以使用MAP_ANON這個宏定義,具體用法是
p = mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANON,-1,0);
mmap函數的第四個參數或上MAP_ANON就可以了,
同時後面的第五個參數由於不依賴文件,就設置爲-1即可。
在其他的類Unix中,可能沒有MAP_ANON這個宏,可以藉助/dev/zero這個文件,它是一個僞文件,大小可以隨意設置。
具體可以用如下兩步來實現:
fd = open("/dev/zero",O_RDWR);
p = mmap(NULL,size,PORT_READ|PROT_WRITE,MAP_SHARED,fd,0);