手动删除shmget创建的共享内存

使用shmget创建或打开共享内存的时候,其中有一个参数是制定了权限的,这个权限类似于文件的权限。 指定了什么身份可以打开已经存在的共享内存。
 
在我的项目中出现了一个程序运行失败, 经过调查发现在使用shmget打开一段共享内存的时候没有权限, 造成这个原因先不管, 下面说一下如果出现这种情况,怎么删除掉已经创建的共享内存。
 
我使用的是linux系统, 可以使用ipcs -m查看已经存在的共享内存
[zhanghua@localhost lib]$ ipcs -m
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00068520 65538      root      666        2352       16
0x00068521 98307      root      666        624        13
0x0006c650 131076     nobody    666        408        11
0x0006c620 163845     root      666        81056      0
0x0006c766 196614     nobody    666        264        7
0x0006c6af 229383     root      666        408        11
0x0006c709 262152     root      666        264        7
其中:
key: shmget第一个参数
owner: 为共享内存的所有者
perms: 权限
bytes: 共享内存的大小
 
通过key找到自己程序创建的共享内存, 发现owner确实和程序运行的时候的身份不一致
 
怎么手动删除一个共享内存呢?
 
通过rpcrm -m shmid删除一个已经存在的共享内存
 
假如我们要删除key=0x0006c709 shmid=262152的共享内存,可以使用下面的命令完成:
ipcrm -m  262152



FROM:  http://blog.chinaunix.net/uid-345900-id-2131340.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值