linux共享内存的使用
linux共享内存和windows的共享内存逻辑上有很大区别,要注意一下几点
1. shmget的第三个参数标识
标识 | 描述 |
---|---|
IPC_EXCL | 这个加入后,如果已经存在标识为key的共享内存则报错返回-1 |
0 | 如果是0 的话,就可以实现,如果共享内存不存在则返回失败-1,否则直接创建返回成功 |
0666 | 这个标识符很多人不知道啥意思,其实试试就知道了,它可以让你在普通用户下创建访问共享内存,如果没有这个标识,共享内存的创建和访问都必须在root用户下进行,参考《unix环境高级编程第二版》,里面有
#define SHM_MODE 0600 /* user read/write */ |