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

上传人:磨石 文档编号:243154913 上传时间:2024-09-17 格式:PPT 页数:17 大小:671.50KB
返回 下载 相关 举报
嵌入式Linux高级编程-04-3posix进程间通信课件_第1页
第1页 / 共17页
嵌入式Linux高级编程-04-3posix进程间通信课件_第2页
第2页 / 共17页
嵌入式Linux高级编程-04-3posix进程间通信课件_第3页
第3页 / 共17页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,中程在线信息产业培训网,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式Linux高级编程-04-3posix进程间通信,*,嵌入式,Linux,高级编程,嵌入式Linux高级编程-04-3posix进程间通信,linux进程间通信,嵌入式Linux高级编程-04-3posix进程间通信,消息队列,unix,早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服了这些缺点。,消息队列就是一个,消息的链表,。可以把消息看作一个记录,具有特定的格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。,嵌入式Linux高级编程-04-3posix进程间通信,分类,目前主要有两种类型的消息队列:,POSIX,消息队列以及系统,V,消息队列,系统,V,消息队列目前被大量使用。,系统,V,消息队列是随内核持续的,只有在内核重起或者人工删除时,该消息队列才会被删除。,嵌入式Linux高级编程-04-3posix进程间通信,键值,消息队列的内核持续性要求每个消息队列都在系统范围内对应唯一的键值,所以,要获得一个消息队列的描述字,必须提供该消息队列的键值。,嵌入式Linux高级编程-04-3posix进程间通信,键值,#include ,#include ,key_t ftok (char*pathname, char proj),功能:,返回文件名对应的键值。,pathname:,文件名,(,已经创建,),proj:,项目名(不为,0,即可),嵌入式Linux高级编程-04-3posix进程间通信,打开,/,创建,#include ,#include ,#include ,int msgget(key_t key, int msgflg),函数描述:建立消息队列,key,:键值,由,ftok,获得。,msgflg,:标志位。,返回值:与健值,key,相对应的消息队列描述字。,msgflg,表示权限以及消息队列的一些特性,有以下取值:,IPC_CREAT IPC_EXCL 0666,等等,嵌入式Linux高级编程-04-3posix进程间通信,打开,/,创建,IPC_CREAT,创建新的消息队列,IPC_EXCL,与,IPC_CREAT,一同使用,表示如果要创建的消息队列已经存在,则返回错误。,IPC_NOWAIT,读写消息队列要求无法得到满足时,不阻塞。,嵌入式Linux高级编程-04-3posix进程间通信,创建,在以下两种情况下,将创建一个新的消息队列:如果没有与健值,key,相对应的消息队列,并且,msgflg,中包含了,IPC_CREAT,标志位。,key,参数为,IPC_PRIVATE,。,嵌入式Linux高级编程-04-3posix进程间通信,创建,int open_queue(key_t keyval),intqid;,if(qid=msgget(keyval,IPC_CREAT)=-1),return(-1);,return(qid);,嵌入式Linux高级编程-04-3posix进程间通信,发送消息,#include ,#include ,#include ,int msgsnd(int msqid,struct msgbuf*msgp,int msgsz,int msgflg),功能:向消息队列中发送一条消息。,msqid:,已打开的消息队列,id,msgp:,存放消息的结构,msgsz:,消息数据长度,msgflg:,发送标志,有意义的,msgflg,标志为,IPC_NOWAIT,,指明在消息队列没有足够空间容纳要发送的消息时,,msgsnd,是否等待。,嵌入式Linux高级编程-04-3posix进程间通信,消息格式,struct msgbuf,long mtype; /*,消息类型, 0 */,char mtext1; /*,消息数据的首地址*,/,;,嵌入式Linux高级编程-04-3posix进程间通信,接收消息,#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(,移除消息对列,),嵌入式Linux高级编程-04-3posix进程间通信,接收消息,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);,嵌入式Linux高级编程-04-3posix进程间通信,实例,#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);,嵌入式Linux高级编程-04-3posix进程间通信,实例,#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);,嵌入式Linux高级编程-04-3posix进程间通信,实例,私有消息队列,IPC_PRIVATE.c,msg.c,一个程序往消息队列里写,alarm,或,quit,,另一个程序读,判断独到的如果是,alarm,则发信号给自己,让自己执行,alarm(5),,如果,quit,则给自己发信号退出程序,嵌入式Linux高级编程-04-3posix进程间通信,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!