问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux消息队列,读而不删怎么弄

发布网友 发布时间:2022-04-22 02:58

我来回答

1个回答

热心网友 时间:2023-12-18 16:07

一般使用步骤:

1. 用ftok产生一个key。

2. 调用msgget(使用key作为参数)产生一个队列

3. 进程可以用msgsnd发送消息到这个队列,相应的别的进程用msgrcv读取。

这里需要注意msgsnd可能会失败的两个情况:

a) 可能被中断打断(包括msgsnd和msgrcv). 尤其是大流量应用中更容易出现. 比较安全的用法是判断操作是否被中断打断,如果被打断, 则需要继续尝试。

b) 消息队列满。产生这个错误,则需要考虑提高系统消息队列规格,或者查看消息接收处是否有问题

4. msgctl函数可以用来删除消息队列
消息队列产生之后,除非明确的删除(可以用),产生的队列会一直保留在系统中。linux下消息队列的个数是有限的,注意不要泄露。如果 使用已经达到上限,msgget调用会失败,产生的错误码对应的提示信息为no space left on device.

注意点:

1.消息的类型 mtype 不需为非0值。如果使用0,则msgsnd会失败,并得到”Invalid argument“错误。

2.msgflg为0表示阻塞等待,如果msgflg为IPC_NOWAIT表示非阻塞。

3.最好使用root权限执行消息队列,否则msgrcv 提示 "Permission denied"。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求大学生谈恋爱的各种弊端 大学生恋爱的利大于弊吗? 大学生谈恋爱的弊处 dnf现在站街16000的物攻 增加100物攻能张多少 家里养的蚕宝宝是要蜕皮了吗 富贵包硬和软的区别 【已完成】为什么腋窝突然有异味? 女生为什么有狐臭症状? 为什么会狐臭 万视宝这个牌子是做什么的?有人了解嘛? 高手进!在Linux系统中用消息队列实现两个进程之间... 如何释放linux过时消息队列 linux 消息队列 的权限问题 Linux下编程消息队列怎么封装较好,怎么保证2个进... 请问Linux下如何清除消息队列queue中的内容 linux 有没有直接发送消息到队列的命令 Linux下 用消息队列收发长度不同的消息 linux系统中哪些可以用于进程间的通信消息队列临界... 请教一个关于linux消息队列的问题 linux系统自带的消息队列和rabbitmq有什么区别? linux 消息队列编程 linux系统编程中的消息队列该怎么使用呀?? Linux多线程同步之消息队列有何特点 电脑中win键是哪个键 键盘windows是哪个键 021-60444623电话 说是建行信用卡 真假啊 4006763673给我打电话说是建行信用卡中心的给我提... 02160345757是不是建行信用卡的电话 怎么把iphone所有照片按时间排列? 换机助手导入苹果13相册按时间顺序排列 linux编程的利用消息队列在两个进程间通信,怎么写... linux 消息队列什么时候删除 linux 程序异常退出,怎么删除消息队列 win10浏览器无法访问页面 win10浏览器无法显示此页怎么办 win10为什么ie浏览器总是无法访问页面 联想win10系统自带edge浏览器打开无法访问该页面,... win10浏览器打不开网页怎么回事 0755是什么地方的区号 0755开头的是什么电话 深圳各区电话号码是怎么区分的? win10浏览器为什么无法访问网页 深圳区号0755是哪里 0755开头是什么电话 0755是哪里的区号 0755是哪里的电话号码区号 0755开头的号码是干嘛的 深圳的区号是多少 请问0755是深圳的区号吗 0755是那里的区号