欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:6569755       资源大小:610.50KB        全文页数:17页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    嵌入式Linux高级编程,linux进程间通信,消息队列,unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服了这些缺点。消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。,分类,目前主要有两种类型的消息队列:POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用。系统V消息队列是随内核持续的,只有在内核重起或者人工删除时,该消息队列才会被删除。,键值,消息队列的内核持续性要求每个消息队列都在系统范围内对应唯一的键值,所以,要获得一个消息队列的描述字,必须提供该消息队列的键值。,键值,#include#include key_t ftok(char*pathname,char proj)功能:返回文件名对应的键值。pathname:文件名(已经创建)proj:项目名(不为0即可),打开/创建,#include#include#include 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);,发送消息,#include#include#include int msgsnd(int msqid,struct msgbuf*msgp,int msgsz,int msgflg)功能:向消息队列中发送一条消息。msqid:已打开的消息队列idmsgp:存放消息的结构msgsz:消息数据长度msgflg:发送标志,有意义的msgflg标志为IPC_NOWAIT,指明在消息队列没有足够空间容纳要发送的消息时,msgsnd是否等待。,消息格式,struct msgbuf long mtype;/*消息类型 0*/char mtext1;/*消息数据的首地址*/;,接收消息,#include#include#include int msgrcv(int msqid,struct msgbuf*msgp,int msgsz,long msgtyp,int msgflg)功能:从msqid代表的消息队列中读取一个msgtyp类型的消息,并把消息存储在msgp指向的msgbuf结构中。在成功地读取了一条消息以后,队列中的这条消息将被删除。msgctl(int msqid,int cmd,struct*);CMD:IPC_SET IPC_STAR IPC_RMID(移除消息对列),接收消息,int read_message(int qid,long type,struct msgbuf*qbuf)int result,length;length=sizeof(struct msgbuf)-sizeof(long);if(result=msgrcv(qid,qbuf,length,type,0)=-1)return(-1);return(result);,实例,#include#include#include#include#include int main()/生成key key_t key=ftok(“/tmp/3,1000);/创建消息队列 int msgid=msgget(key,IPC_CREAT|IPC_EXCL|0600);if(msgid0)perror(error),exit(-1);/发送消息 char*msg=Hello world!;if(msgsnd(msgid,msg,strlen(msg),0)0)perror(error);,实例,#include#include#include#include#include int main()key_t key=ftok(“/tmp/3,1000);int msgid=msgget(key,0);if(msgid0)perror(error),exit(-1);char msg100=;if(msgrcv(msgid,msg,sizeof(msg),0,0)0)perror(error);printf(msg:%sn,msg);,实例,私有消息队列IPC_PRIVATE.cmsg.c一个程序往消息队列里写 alarm或quit,另一个程序读,判断独到的如果是alarm则发信号给自己,让自己执行alarm(5),如果quit则给自己发信号退出程序,

    注意事项

    本文(嵌入式Linux高级编程-04-3posix进程间通信.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开