- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程通信 在进程之间进行信息交换,包括传递信号和数据。 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
您可能关注的文档
- 相关制度介绍(财务)讲述.ppt
- 第15课推动社会进步的科技成就详解.ppt
- 第2章机械工程材料及钢的热处理详解.ppt
- 第2章基本概念与基础知识详解.ppt
- 相关环境保护法律法规讲述.ppt
- 第2章计算机安全防护工具详解.ppt
- 相见欢赏析讲述.doc
- 相关方典型安全事故案例知识分享(建筑施工类)讲述.pptx
- 相遇问题整理讲述.docx
- 相遇问题课件讲述.doc
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)