易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux环境进程间通信(三)


Linux环境进程间通信(三)
消息队列
文档选项
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width="16"
height="16" src="//www.ibm.com/i/c.gif"/></td><td class="small"
width="122"><p><span class="ast">未显示需要 JavaScript
的文档选项</span></p></td></tr>
打印本页
将此页作为电子邮件发送
级别: 初级
郑彦兴
(mlinux@163.com
)国防科大计算机学院
2003 年 1 月 17 日
本系列文章中的前两部分,我们探讨管道及信号两种通信机制,本文将深入第三部分,介绍系统 V 消息队列及其相应 API。
消息队列(也叫做报文队列)能
够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX
1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号
的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进程持续的概念
(process-persistent),见 附录 1
;管道及有名管道及有名管道则是典型的随进程持续IPC,并且,只能传送无格式的字节流无疑会给应用程序开发带来不便,另外,它的缓冲区大小也受到限制。

消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息。消息队列是随内核持续的(参见
附录 1
)。

目前主要有两种类型的消息队列:POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用。考虑到程序的可移植性,新开发的应用程序应尽量使用POSIX消息队列。

本系列专题的序(深刻理解Linux进程间通信(IPC))中,提到对于消息队列、信号灯、以及共享内存区来说,有两个实现版本:POSIX的以及系统V
的。Linux内核(内核2.4.18)支持POSIX信号灯、POSIX共享内存区以及POSI


相关文档:

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

盘点2009:Linux服务器软件发展亮点多

硬件技术一直和软件技术相依相随,随着服务器硬件和芯片技术的进步,推动着服务器操作系统技术的变革。
  芯片技术的发展:从x86到龙芯
  2009年,各大芯片厂商都推出了多款芯片产品:如Intel公司基于Nehalem架构发布的桌面端芯片产品酷睿i7;AMD公司也推出了基
于新Fiorano平台的代号为“伊斯坦布尔”的六 ......

linux设备文件系统sysfs介绍

      linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。
1,devfs:devfs是在2.4内核就出现了,它是用来解决linux中设备管理混乱的问题,linux内核开发人员开发了devfs。
2,sysfs:是Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与proc 有些类似,但 ......

Linux netfilter源码分析(3)

转贴自:http://alexanderlaw.blog.hexun.com/8968782_d.html
三、ipt_table表的注册
 
init()函数初始化时调用了ipt_register_table函数进行表的注册
 
3.1  ip_tables.c 表的注册 ipt_register_table
int ipt_register_table(struct ipt_table *table)
{
       ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号