当程序有共享内存,并且在程序退出的时候,未正常回收的时候,下次启动的时候,shmget的时候会出现permission denied 的异常
如果下次调用shmget时出现"Permission denied"的错误提示,可能是上次创建共享内存时没有正确删除共享内存而导致的。此时可以根据下面的方法进行解决:
使用ipcs命令查看当前系统中的IPC(进程间通信)资源,找到对应的共享内存的id:
$ ipcs -m
使用ipcrm命令删除指定id的共享内存:
$ ipcrm -m [共享内存id]
执行成功后,该共享内存将被删除,之后就可以重新调用shmget函数创建新的共享内存了。