声明】int shmget(key_t key,size_t size,int shmflg)

说明】key_t本质为int类型

问题】shmget返回-1

原因】size大小不合理

  • size大小不能超过系统指定共享内存的最大值,不能低于共享内存指定的最小值。共享内存大小查看命令:
sysctl -a | grep shm
  • 指定的key已存在共享内存大小,无法修改。查看指定key是否存在:1、代码中按16进制打印key,并记录key值。2、查看linux中是否存在此key的共享内存。3、若存在,则根据对应的shmid删除对应共享内存段。4、重新执行代码,ok。
查看共享内存使用情况
ipcs

删除指定key的共享内存
ipcrm -m shmid

 

 

 

Logo

更多推荐