1 / 17
文档名称:

嵌入式Linux高级编程--04-3posix_进程间通信.ppt

格式:ppt   页数:17
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

嵌入式Linux高级编程--04-3posix_进程间通信.ppt

上传人:yuzonghong1 2014/11/22 文件大小:0 KB

下载得到文件列表

嵌入式Linux高级编程--04-3posix_进程间通信.ppt

文档介绍

文档介绍:嵌入式Linux高级编程
linux进程间通信
消息队列
unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服了这些缺点。
消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。
分类
目前主要有两种类型的消息队列:
POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用。
系统V消息队列是随内核持续的,只有在内核重起或者人工删除时,该消息队列才会被删除。
键值
消息队列的内核持续性要求每个消息队列都在系统范围内对应唯一的键值,所以,要获得一个消息队列的描述字,必须提供该消息队列的键值。
键值
#include <sys/>
#include <sys/>
key_t ftok (char*pathname, char proj)
功能:
返回文件名对应的键值。
pathname:文件名(已经创建)
proj:项目名(不为0即可)
打开/创建
#include <sys/>
#include <sys/>
#include <sys/>
int msgget(key_t key, int msgflg)
函数描述:建立消息队列
key:键值,由ftok获得。
msgflg:标志位。
返回值:与健值key相对应的消息队列描述字。
msgflg表示权限以及消息队列的一些特性,有以下取值:IPC_CREAT IPC_EXCL 0666 等等
打开/创建
IPC_CREAT
创建新的消息队列
IPC_EXCL
与IPC_CREAT一同使用,表示如果要创建的消息队列已经存在,则返回错误。
IPC_NOWAIT
读写消息队列要求无法得到满足时,不阻塞。
创建
在以下两种情况下,将创建一个新的消息队列:如果没有与健值key相对应的消息队列,并且msgflg中包含了IPC_CREAT标志位。key参数为IPC_PRIVATE。
创建
int open_queue(key_t keyval)
{
intqid;
if((qid=msgget(keyval,IPC_CREAT))==-1)
{
return(-1);
}
return(qid);
}