热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

管道的个人理解

Pipe:用与进程间通信。1问:进程间为什么通信要借助管道?答:进程由于独立的内存,彼此间不可通过局部变量之类的访问交流。所以要借助创建者操作系统的力量(当个快递员)让二者联系起来

Pipe:用与进程间通信。

1问:进程间为什么通信要借助管道?

答:进程由于独立的内存,彼此间不可通过局部变量之类的访问交流。所以要借助创建者操作系统的力量(当个快递员)让二者联系起来。

 

2问:操作系统怎么就用管道让两者通信了呢?

答:管道创建两个文件描述符,一个专门读,一个专门写。父子进程通过fork(操作系统的力量)共享该两个文件描述符,然后读写即可形成单方向通道。详见下图:

盗个图,( ╯□╰ )

3.问:为什么pipe创建两个文件描述符呢?一个不好吗?

答:必须要两个才能单向通道,如果仅以个,父进程写。子进程读。

考虑子进程要等着读数据,没有数据时读要等待。父进程写完了,子进程read就不应阻塞了吧,但是子进程没有判断依据呀我怎么知道父进程时暂时没发还是永久不发呢?

两个文件形成图第三步的单通道,父进程关了写端,子进程收到写端fd[1]全关了的依据,判断管道没数据就直接结束。(所以上图第二步要父进程光写就把读端关了,子进程把写端关了,目的就是要保证双方有足够的依据判断对方什么状态。)

 

 

 


推荐阅读
author-avatar
多米音乐_34067977
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有