ChinaUnix.net
相关文章推荐:

linux 消息队列 与dbus

基本概念 1.队列 队列是信息的线性表,它的访问次序是先进先出(FIFO)。也就是说,置入队列中的 第一个数据项将是从队列中第一次读出的数据项,置入的第二项将是读出的第二项,依 此类推。这是队列允许的唯一存取操作,其它随机访问是不允许的。这种数据结构保证 对数据资源的请求将严格按照先后顺序进行,因而可用于对事件的调度并起到I/O缓冲 的作用。 2.报文 发送进程和接收进程进行信息的交换,一般是通过将信息划分为若干段...

by wushuan10141 - Linux文档专区 - 2009-10-10 19:45:18 阅读(1096) 回复(0)

相关讨论

请问各位高手,为何我在使用函数int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg)时 第三个参数被限制为28一下呢?一旦超过这个就会报错:msgsnd: Invalid argument 请问是内核参数限制了吗? 我查看过这些内核参数: kernel.msgmnb = 65535 kernel.msgmni = 4096

by zhengjun9999 - Linux环境编程 - 2008-07-09 00:10:45 阅读(3678) 回复(14)

看了一些消息队列的实现,发现消息队列的操作里一般都会有锁和信号量,请问有锁了为什么还要有信号量呢??信号量的作用是什么?好像它的作用锁都有了啊?小白求大神指导~~

by lzyshijune - C/C++ - 2014-07-06 18:11:47 阅读(1656) 回复(3)

最近遇到一个问题,多个进程对一个消息队列进行读写, 有一种情况是 如果读进程一直 不去读取消息队列 那么写进程就不能往队列里再写东西 这样会造成程序卡死了 我是这样想的 在队列中的消息结构里定义一个时间变量 存放的是消息被写进队列的时间 然后由一个管理进程定期对消息队列进行监控 如果消息超过设定的时间还没有被读取 则清除它 想问的是: 消息队列中有没有这种机制 只读取消息 而不将它从队列中移...

by OnlyForStudy - C/C++ - 2014-01-06 20:59:12 阅读(9130) 回复(7)

大家好,我使用消息队列的程序出现了堵塞的问题,请问 我想查看下堵塞的消息的内容,请问有什么命令吗?

by unix_neu - Linux新手园地 - 2011-01-14 17:09:09 阅读(2098) 回复(1)

linux下使用syetmV消息队列方式来传递数据 现在msgsnd返回-1,但是使用ipcs查看 对应的消息队列messages个数有相应的增加。。 这是为嘛? 实际上 我使用msgrcv函数也能接收到数据,但是同msgsnd类似msgrcv也提示失败。。。 发送方代码如下: #include #include #include #include #include #include #include struct msgbuf{ long mt...

by song0071000 - 内核源码 - 2013-11-18 17:48:23 阅读(3325) 回复(0)

看别人的代码,函数功能为创建消息队列[code]typedef unsigned int U32 typedef struct { sem_t sem; pthread_mutex_t mutex; U32 u32MsgSize; //消息大小 U32 u32MaxMsgs; //消息队列中所能容纳的最多消息数 void *msgs; //消息指针 U32 u32HeaderIdx; //当前消息序号 U32 u23MsgNum;// the number of existing msgs in the message queue }MsgInfo_t;[/code][...

by sudawuqi - C/C++ - 2013-07-10 13:51:01 阅读(3028) 回复(4)

原文 消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进程持续的概念...

by davycu - Linux文档专区 - 2009-06-09 17:16:14 阅读(699) 回复(0)

linux消息队列(queue)实质上是一个链表, 它有消息队列标识符(queue ID). msgget创建一个新队列或打开一个存在的队列; msgsnd向队列末端添加一条新消息; msgrcv从队列中取消息, 取消息是不一定遵循先进先出的, 也可以按消息的类型字段取消息. 1. 标识符(des)和键(key): 消息队列, 信号量和共享存储段, 都属于内核中的IPC结构, 它们都用标识符来描述. 这个标识符是一个非负整数, 与文件描述符不同的是, 创建时并不会重复利用通...

by tuyer - Linux文档专区 - 2008-09-27 10:33:36 阅读(919) 回复(0)

那位能帮我把程序改好,我向他(她)致敬,多谢!Exchange结构不能改。 [ 本帖最后由 nianabc 于 2008-4-17 09:01 编辑 ]

by nianabc - C/C++ - 2008-04-17 09:02:48 阅读(4453) 回复(11)

比如结构如下定义 typedef struct { long mtype; unsigned char msgdata[MMAX]; }MSG_STRUCT; msgsnd的时候,mtype=10 但接收的时候,msgrcv却不能以10接收,换任何其他值都可以,这是为什么?按道理只有10和0两个值可以接收的啊! 哪位大侠给点津下!谢谢!

by 明日天晴 - 程序开发 - 2006-12-15 08:58:42 阅读(1028) 回复(0)