社区
Linux/Unix社区
帖子详情
linux下消息队列阻塞读取超时问题
肉三
2016-06-23 04:22:50
c程序在阻塞recv时(指定type值的),如果消息队列内没有这个消息,程序会一直等待,那么想要程序在规定时间内结束阻塞读取继续往下运行,该如何做?
...全文
1357
1
打赏
收藏
linux下消息队列阻塞读取超时问题
c程序在阻塞recv时(指定type值的),如果消息队列内没有这个消息,程序会一直等待,那么想要程序在规定时间内结束阻塞读取继续往下运行,该如何做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhxingway
2016-06-24
打赏
举报
回复
ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtype, int msgflag) #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> 功能: 从队列中接收消息 参数: msqid:已打开的消息队列id msgp:存放消息的结构体指针。msgp->mtype与第四个参数是相同的。 msgsz:消息的字节数,指定mtext的大小。 msgtype:消息类型,消息类型 mtype的值。如果为0,则接受该队列中的第一条信息,如果小于0,则接受小于该值的绝对值的消息类型,如果大于0,接受指定类型的消息,即该值消息。 msgflag:函数的控制属性。 msgflag: MSG_NOERROR:若返回的消息比nbytes字节多,则消息就会截短到nbytes字节,且不通知消息发送进程. IPC_NOWAIT:调用进程会立即返回.若没有收到消息则返回-1. 0:msgrcv调用阻塞直到条件满足为止. 在成功地读取了一条消息以后,队列中的这条消息将被删除。 -------------------------------------------------------------------------------------------- 内核的消息队列没有这功能。但可以考虑使用不阻塞的模式
linux
测试
消息队列
阻塞
,
Linux
进程间通信:
消息队列
一、
消息队列
的特点1.
消息队列
是消息的链表,具有特定的格式,存放在内存中并由
消息队列
标识符标识.2.
消息队列
允许一个或多个进程向它写入与
读取
消息.3.管道和命名管道都是通信数据都是先进先出的原则。4.
消息队列
可以实现消息的随机查询,消息不一定要以先进先出的次序
读取
,也可以按消息的类型
读取
.比FIFO更有优势。目前主要有两种类型的
消息队列
:POSIX
消息队列
以及系统V
消息队列
,系统V
消息队列
目前被大...
Linux
网络编程I/O模式设置总结(
阻塞
/非
阻塞
,recv参数等)
阻塞
IO 和非
阻塞
IO: 在网络编程中对于一个网络句柄会遇到
阻塞
IO 和非
阻塞
IO 的概念, 这里对于这两种socket 先做一下说明: 基本概念:
阻塞
IO:socket 的
阻塞
模式意味着必须要做完IO 操作(包括错误)才会返回。 非
阻塞
IO:非
阻塞
模式下无论操作是否完成都会立刻返回,需要通过其他方式来判断具体操作是否成功。 IO模式设置: SOCKET 对于
linux
下
阻塞
、非
阻塞
区别
socket基本概念:
阻塞
IO:: socket 的
阻塞
模式意味着必须要做完IO 操作(包括错误)才会 返回。 非
阻塞
IO:: 非
阻塞
模式下无论操作是否完成都会立刻返回,需要通过其他方 式来判断具体操作是否成功。(对于connect,accpet操作,通过select判断, 对于recv,recvfrom,send,sendto通过返回值+错误码来判断) IO模式设置: 一般对于一个socket...
Linux
进程通信之POSIX
消息队列
消息队列
是
Linux
IPC中很常用的一种通信方式,它通常用来在不同进程间发送特定格式的消息数据。
消息队列
和之前讨论过的16.1管道和FIFO有很大的区别,主要有以下两点: l 一个进程向
消息队列
写入消息之前,并不需要某个进程在该队列上等待该消息的到达,而管道和FIFO是相反的,进程向其中写消息时,管道和FIFO必需已经打开来读,否则写进程就会
阻塞
(默认情况下)。 l IPC的持续性不同。
Linux
中
消息队列
【代码】
Linux
中
消息队列
。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章