- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程通信 在进程之间进行信息交换,包括传递信号和数据。 Linux无名管道通信 若只触发某些行为,软中断信号机制简捷有效。 若进程间需交换数据? ---- 管道 管道:用“管道”将读写进程连接在一起,写进程将数据从写入端写入,读进程将数据从读出端读出。数据量大小是系统定义的最大缓冲区字节数。 创建和使用无名管道的系统调用 1. 创建管道 格式: int pipe( int fp[2] ); 返回:0 --- 正确返回,-1 ---- 错误返回 参数:fp[1]为写入端,fp[0]为读出端 功能:创建一个无名管道fp,fp[1]用于写,fp[0]用于读。 2. 读写管道----借助文件机制 格式:写管道 write( fp[1], buf, size ); 读管道 read( fp[0], buf, size ); 参数:buf为数据缓冲区;size为l读写长度。 头文件:unistd.h 管道通信示例1 main() { int p1, fd[2] ; char outpipe[50], inpipe[50]=“This is a message from child.”; pipe(fd); p1=fork(); if (p1==0) write(fd[1],inpipe,50); //写信息到管道 else if (p10); { wait(0); //等待子进程终止 read(fd[0],outpipe,50); //从管道读信息 printf(%s\n,outpipe); } } 管道通信示例2 main() { int p1, fd[2] ; char str1[50], str2[50]; pipe(fd); p1=fork(); 子进程执行的分支 父进程执行的分支 } 管道通信示例2执行结果分析 修改管道通信示例2 无名管道通信机制特点 管道中的数据是字符流,工作于单向通信方式; 管道逻辑上是由系统在内存中创建的临时文件实现的,物理上则由文件系统的高速缓冲区构成; 无名管道只能供创建管道的进程及其子孙进程共享; 管道为临界资源,各进程对管道的访问既有同步又有互斥,需要用户自己借助同步互斥机制以及文件机制来实现对管道的访问! Linux消息缓冲队列 1.创建或获取消息队列 格式:int msgget ( key_t key, int msgflag ); 功能:创建或获取标识为key的消息队列,并返回队列描述符。 返回:正确返回该消息队列的描述符msgid;错误返回-1。 参数: key—消息队列标识符,为正整数。可由用户指定(适用于不同进程家族);也可使用IPC_PRIVATE由系统产生key值(适用于同一进程家族); msgflag—标志或访问方式,由操作权限和控制命令进行或运算得到。 操作权限:用户可读0400 小组可读0040 其他可读0004 用户可写0200 小组可写0020 其他可写0002 控制命令:IPC_CREAT(值0001000),若队列不存在则创建。 2.对消息队列的控制 格式:int msgctl( int msgid, int cmd, struct msqid_ds *buf ); 功能:查询、设置消息队列的状态;撤消消息队列。 返回:函数调用成功返回0,不成功返回-1。 参数: msgid—该消息队列的描述符; cmd—规定命令的类型: IPC_STAT 查询消息队列状态,将消息队列的msqid_ds复制到buf; IPC_SET 设置或修改消息队列状态,设置有效用户、组标识、操作允许权、字节数; IPC_RMID 撤消描述符为msgid的消息队列; buf—含有控制参数或查询结果的用户缓冲区的地址,可为0。 3.发送消息 格式:int msgsnd( int msgid, struct msgbuf*msgp, int size, int flag); 功能:将msgp-msgbuf中的消息复制到msgid消息队列中,将之挂到队尾,唤醒等待消息的进程。 参数:msgid—执行msgget()返回的消息队列的描述符; msgp—待发送的消息; size—由msgp指向的数据结构中消息长度; flag—规定当消息队列满时应执行的动作,例如:若在fl
您可能关注的文档
- 机场集团呼叫中心解决方案重点.doc
- 第2章 软件生存期模型解析.ppt
- 第1章热化学与能源讲解.ppt
- 机场运行最低标准2015.9重点.ppt
- 第1章电子商务概论讲解.ppt
- 第2章 输入通道接口技术解析.ppt
- 机房工作计划重点.doc
- 机房承重加固标准介绍重点.doc
- 第1章电路的基本概念、定律讲解.ppt
- 第2章 速度继电器和温度继电器解析.ppt
- [中央]2023年中国电子学会招聘应届生笔试历年参考题库附带答案详解.docx
- [吉安]2023年江西吉安市青原区总工会招聘协理员笔试历年参考题库附带答案详解.docx
- [中央]中华预防医学会科普信息部工作人员招聘笔试历年参考题库附带答案详解.docx
- [保定]河北保定市第二医院招聘工作人员49人笔试历年参考题库附带答案详解.docx
- [南通]江苏南通市崇川区人民法院招聘专职人民调解员10人笔试历年参考题库附带答案详解.docx
- [厦门]2023年福建厦门市机关事务管理局非在编工作人员招聘笔试历年参考题库附带答案详解.docx
- [三明]2023年福建三明市尤溪县招聘小学幼儿园新任教师79人笔试历年参考题库附带答案详解.docx
- [哈尔滨]2023年黑龙江哈尔滨市木兰县调配事业单位工作人员笔试历年参考题库附带答案详解.docx
- [上海]2023年上海市气象局所属事业单位招聘笔试历年参考题库附带答案详解.docx
- [台州]2023年浙江台州椒江区招聘中小学教师40人笔试历年参考题库附带答案详解.docx
文档评论(0)