文档详情

02-Linux系统编程-04_消息队列、共享内存.pdf

发布:2017-07-26约1.04万字共36页下载文档
文本预览下载声明
嵌入式系统工程师 消息队列、共享内存 消息队列、共享内存 2 大纲 大纲  消息队列(message queue)  共享内存(shared memory) 33 大纲 大纲 消息队列(message queue) 共享内存(shared memory) 44 消息队列概述 消息队列概述  消息队列是消息的链表,存放在内存中,由内核维护  消息队列的特点 消息队列允许一个或多个进程向它写入或者读取消 息,并且每条消息都有类型。 消息队列可以实现消息的随机查询,消息不一定要 以先进先出的次序读取,编程时可以按消息的类型 读取。 与无名管道、有名管道一样,从消息队列中读出消 息,消息队列中数据会被删除。 同样消息队列中的消息是有格式的。 55 消息队列概述 消息队列概述 只有内核重启或人工删除时,该消息才会被删除,若 不人工删除消息队列,消息队列会一直存在于内存中  消息队列标识符,来标识消息队列。消息队列在整个 系统中是唯一的。 在Linux操作系统中消息队列限制值如下: 消息队列个数最多为16个 消息队列总容量最多为16384字节 每个消息内容最多为8192字节 66 消息队列 消息队列 System V提供的IPC通信机制需要一个key值,通过key 值就可在系统内获得一个唯一的消息队列ID。 key值可以是人为指定的,也可以通过ftok函数获得。 77 消息队列 消息队列 #include sys/types.h #include sys/ipc.h key_t ftok(const char *pathname, int proj_id); 功能: 获得项目相关的唯一的IPC键值。 参数: pathname:路径名 proj_id:项目ID,非0整数(只有低8位有效) 返回值: 成功返回key值,失败返回 -1。 88 消息队列 消息队列 创建消息队列: #include sys/msg.h int msgget(key_t key, int msgflg); 功能: 创建一个新的或打开一个已经存在的消息队列。 不同的进程调用此函数,只要用相同的key值就能得到 同一个消息队列的ID。 参数: key:IPC键值 msgflg:标识函数的行为:IPC_CREAT(创建)或 IPC_EXCL(如果已经存在则返回失败)。 返回值: 成功:消息队列的标识符,失败:返回-1。
显示全部
相似文档