如何 删除所有的消息队列 (高分)

qq277541717 2010-09-08 04:17:06
加精
申请临时的消息队列后,如果程序不是正常退出,消息队列则会留在内核中,并一直累加.
当消息队列数大于配置支持的最大数时,则会出错.我如何才能清除掉那些无效了的消息队列(非手动)?

如:int Key = msgget(IPC_PRIVATE, IPC_CREAT|00666);
msgctl(__Key, IPC_RMID, NULL);
...全文
8169 88 打赏 收藏 转发到动态 举报
写回复
用AI写文章
88 条回复
切换为时间正序
请发表友善的回复…
发表回复
__壹零贰肆__ 2012-08-31
  • 打赏
  • 举报
回复
受教了,多谢各位啊
gdwangwei 2011-09-09
  • 打赏
  • 举报
回复
我的方法是:
signal(SIGINT,remove_queue); //用户捕获系统退出等信号量,并删除队列
void remove_queue(int qid)
{
qid = 你创建队列时的id;
/* Remove the queue */
msgctl(qid, IPC_RMID, 0);
exit(1);
}

就ok了!试试吧
shry999 2011-08-16
  • 打赏
  • 举报
回复
学习了!
钱国正 2011-04-30
  • 打赏
  • 举报
回复
ipcrm -Q keyid
JosephMu 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 cochlea2007 的回复:]
我的建议, 不使用, unix域套接字, 帮你解决各种IPC难题
[/Quote]

同感~~
我觉得最笨的方法:
其实可以程序利用ipcs把得到的消息号写到标准流里面,
然后把消息号取出来。再删除不就行了么?

另一个更笨的方法:
在你创建消息队列的时候,把消息号写到一个文件中,然后退出前处理一下这个文件就好了。

如果是core dump就谁也没办法了。
关键是你退出的有多恶劣。
editionman 2010-09-23
  • 打赏
  • 举报
回复
看看。。。
qq277541717 2010-09-22
  • 打赏
  • 举报
回复
十分感谢lantianye的相告。
hairetz 进程退出绝对回收不太懂。因为进展在段错误异常退出时,无法跟踪到临时创建的信息。
  • 打赏
  • 举报
回复
我一般是用ftok来做。
然后保证ipc的文件跟创建的ipc资源是同步存在的,如果进程退出绝对回收sem,msg等资源,那也会同步unlink掉对应ipc文件。

如果非要用脚本来善后,也很方便,因为只要不是实际新建了一个ipc资源,每次调用msgget之类的系统调用,同一个key_t必然得到相同的ipc key。所以ipcrm之即可。
gaogao110 2010-09-21
  • 打赏
  • 举报
回复
学习。。。。。。。。
yhd1074694651 2010-09-20
  • 打赏
  • 举报
回复
不懂
··················
monkey7604 2010-09-20
  • 打赏
  • 举报
回复
在程序中调用ipcs也可以呀
yhlzln 2010-09-20
  • 打赏
  • 举报
回复
学习了,感谢楼主
ce_qbliu 2010-09-20
  • 打赏
  • 举报
回复
好复杂哦
lantianye 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 58 楼 qq277541717 的回复:]

在退出程序时处理异常,把申请的临时队列删掉。这个工作量不小,且我现在还不太懂。
看来还是写一个脚本搞定。
[/Quote]

正常开发程序必须要做信号处理的,这属于默认的规范了,我这有一个信号的处理函数,是linux系统下的
void set_sig()
{
struct sigaction act;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
act.sa_handler = sig_child_exit_handler;
sigaction(SIGCHLD, &act, NULL);

sigemptyset(&act.sa_mask);
act.sa_flags = 0;
act.sa_handler = sig_exit_handler;
sigaction(SIGTERM, &act, NULL);
sigaction(SIGQUIT, &act, NULL);
sigaction(SIGILL, &act, NULL);
sigaction(SIGABRT, &act, NULL);
sigaction(SIGFPE, &act, NULL);
sigaction(SIGBUS, &act, NULL);
sigaction(SIGSEGV, &act, NULL);

}

其中sig_child_exit_handler和sig_exit_handler是你自定义的处理逻辑
wwwyzt 2010-09-20
  • 打赏
  • 举报
回复
学习了。。这个问题好!
shuangwen163 2010-09-19
  • 打赏
  • 举报
回复
正在学习
gu0120 2010-09-19
  • 打赏
  • 举报
回复
ddd
  • 打赏
  • 举报
回复
学习。。。。。。。。。。
macklau 2010-09-19
  • 打赏
  • 举报
回复
学习了
tata050 2010-09-19
  • 打赏
  • 举报
回复
灌水————
加载更多回复(68)
高分笔记系列书籍简介高分笔记系列书籍包括《数据结构高分笔记》《组成原理高分笔记》《操作系统高分笔记》《计算机网络高分笔记》等,是一套针对计算机考研的辅导书。它们2010 年夏天诞生于一群考生之手,其写作风格突出表现为:以学生的视角剖析知识难点;以通俗易懂的语言取代晦涩难懂的专业术语;以成功考生的亲身经历指引复习方向;以风趣幽默的笔触缓解考研压力。相信高分笔记系列书籍带给考生的将是更高效、更明确、更轻松、更愉快的复习过程。 数据结构高分笔记简介众所周知,在计算机统考的四门专业课中,最难拿高分的就是数据结构。但是这门课本身的难度并不是考生最大的障碍,真正的障碍在于考生不能独自把握复习方向和考试范围。也许有学生要问,我们不是有大纲吗?照着大纲去复习不就可以了吗?表面上看是这样的,但是当你真正开始复习的时候就会发现,其实大纲只给了考生一个大致范围,有很多地方是模糊的,这些模糊的地方可能就是你纠结的地方。比如大纲里对于栈和队列的考查中有这么一条:“栈和队列的应用”。这个知识点就说得很模糊,因为只要涉及栈和队列的地方,都是其应用的范畴,这时考生该怎么办呢?于是把所有的希望寄托于参考书,希望参考书能帮助我们理解大纲的意图。参考书分为两种:一是课本,二是与课本配套的辅导书。对于课本,考生用得最多的就是严蔚敏老师编写的“严版”《数据结构》。因为这本书的内容非常丰富,如果能把这本书中考试大纲要求的章节理解透彻,参加考研就没有任何问题,但是这个过程是漫长的,除非本科阶段就学得非常好。计算机统考后,专业课四门加上公共课三门,一共是七门,绝大多数考生复习的时间一般也就六个月,而数据结构的复习需要占用多少时间,这点大家都很清楚。要在这么短的时间内掌握“严版”《数据结构》中考纲要求的知识点,基本上是不可能的,这就需要一本辅导书来依照大纲从课本中总结出考纲要求的知识点,才能使得考生在短时间内达到研究生考试的要求。市面上的参考书有两种:一种是四合一的辅导书,另一种是分册的。比如网上流行的《1800 题》及其第2 版,此书中题目极多,并且有很多老式的考研题,有些算法设计题的答案是用Pascal语言写的。这本书中的题目一般考生全做基本上是不可能的,挑着做又会把时间浪费在选题上。不可否认,这本书确实是一本非常好的题库,但是考生直接拿来用作考研辅导书却不太合适。在这种情况下,就需要有一本优质的完全针对新大纲的辅导书出现,这就是高分笔记产生的原因。 接下来详细介绍一下这本辅导书的写作过程,请看下图: 前 言VII图中所涉及的书都是大家很熟悉的。当年这些书编者都买了,花了很大心思才从中找出在考研战场上真正有用的东西。比如《1800 题》,里边既有好题,又有废题,相信很多人都希望有人能从中去掉重复的题目,选出大纲要求的题目,并能把解答写得更通俗易懂些,而现在编者所做的工作就是从这1800 道题中选出大纲要求的题目,并且修正部分解答,使其更容易理解。其次是“严版”《数据结构》,此书写得很严谨,语言表述非常专业,但对于基础稍差的学生来说读起来十分费力,要很长时间才能适应这本书的写作风格。如果有一本辅导书能把那些复杂程序的执行过程、拗口的专业术语、令人头大的符号翻译成容易理解的语言,就可以节省考生很多时间,因此,编者所做的事情就是根据自己复习的经验,以及对这本书的理解,把其中考试不需要的内容删掉,把需要的内容改造成一般考生容易接受的形式。对于李春葆老师的《数据结构习题与解析》,也做了类似的处理,并且在这本书中穿插讲解了一些考试大纲中没有明文规定,但是很多算法题目中大量用到的算法设计思想,来帮助大家提高解算法设计题的能力,比如搜索(打印图中两结点之间的所有路径)、分治法(二分法排序、求树的深度等)等算法思想。因此,相信本书会给读者的考研复习带来很大的帮助。 另外,本书配有微信公众号来收集读者的反馈,这也是本书不断更新完善的重要途径,即根据考生最需要的内容来作为调整讲解的依据。 本书特点: (1)精心挑选出适合考研的习题,并配上通俗易懂的答案,供读者自测和练习。 (2)总结出考研必备知识点,并且帮读者把其中过于专业、过于严谨的表述翻译成通俗易懂的语言。 (3)针对近年数据结构大题的出题风格(比如算法设计题目中的三段式题目:①表述算法思想;②写出算法描述;③计算算法的时间和空间复杂度),设计了独特的真题仿造部分,让读者在复习的过程中逐渐适应不同类型的题目。 参加本书编写的人员还有:章露捷,刘建萍,施伟,刘炳瑞,刘菁,孙琪,金苍宏,2019 版数据结构高分笔记VIII蔡明婉,吴雪霞,孙建兴,张继建,胡素素,邱纪虎,率方杰,李玉兰,率秀颂,刘忠艳,赵建,张兆红,张来恩,张险峰,殷凤岭,于雪友,周桂芝,张玉奎,李亚静,周莉,李娅,刘梅,殷晓红,李艳红,王中静,张洪英,王艳红

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧