怎么来理解管道?
来源:互联网 发布:ios模拟gps定位软件 编辑:程序博客网 时间:2024/04/23 23:15
|
管道在多进程中通信以及数据共享时,非常的方便,但自己一直对管道的理解有一些偏差,首先,管道是一个特殊的文件,定义int fd[2],就是为了存储管道两端的文件描述符,可以把管道历程成一段临时区域,通过两端的文件相连,由于管道对应一段内存区域,那么它不肯能同时进行读写的操作,所以认为管道是单工的,一定要明确的是管道是一段特殊的内存区域,而这段内存区域是由内核来控制的,如果要详细的理解管道的实现细节,就需要去阅读内核代码了,这里只是写一些感性认识,多是一些实践的来的经验了。
在编程实践中发现,多进程中,管道的使用不一定要关闭一些读写端口,比如开启管道后,子进程送数据给父进程,而在父进程中就不是必须把写即fd[2]关闭,同样在子进程就不是必须把读fd[0]关闭,管道就比如一个杯子插入多个吸管,而这些吸管在同一时刻只有一个可以工作,只要保证在读或者写不要重复就可以了。
管道另外一个特点是在子进程消亡后,管道中的信息不会消失,但前提是这个管道是由父进程创建并初始化的,这样的话,即便是在子进程中写入信息到管道,而父进程又创建了自己新的子进程,在原子进程消亡后,新的子进程还可以读取到原来子进程发送在管道中的数据,有一些细节的东西是需要注意的,在读管道的信息时,如果管道中没有数据,那么这时就会发生阻塞现象,直到管道中有新的数据写入,特别需要注意的是管道的中断,如果管道的读取端即fd[0]关闭,而这时还继续想管道中写入数据,那么就会发生管道中断,默认的系统操作就是进程结束。
感悟: linux中的文件概念非常的广泛,不仅是管道,很多的东西都可以理解为文件,而它实际的实现也是通过文件来是实现的。这就是linux的伟大。一个文件走遍天下
一起看看pipe的真实面貌:
|
上一篇:软件构架师需要什么技能?
下一篇:Linux系统调用列表
- 天津蝶贝蕾化妆品股份有限公司...
- 万维网之父:警惕政府正在接管...
- 视频开发的岗位
- 牌九透视眼镜 扑克
- www.fenghuangyulepingtai.com...
- linux 常见服务端口
- 什么是shell
- linux socket的bug??
- linux的线程是否受到了保护?...
- 一个适用于windows和linux的抓...
- debian7系统与ATI X2300显卡...
- ubuntu sysklogd之配置文件介...
- 自己用的ubuntu环境搭建(一)...
- linux 学习心得
- 用户输入操作和数据的显示...
- 怎么来理解管道?
- 管道理解
- 程序员怎么用代码来理解access,trunk和hybrid
- 求教 “不要用额外空间来实现”怎么理解
- 怎么简单怎么来
- 管道的理解
- 用js做的简单选项卡,仅供理解原理,我是怎么丑怎么做出来的
- 分怎么来呢?
- 积分怎么来的
- 积分怎么来?
- 积分怎么来啊!
- delphi 怎么来压缩文件
- 积分怎么来呢
- Java这个名字怎么来
- -128怎么来的
- 初恋用户怎么来
- arithmetic怎么来的
- 用QSocket来操作Linux命名管道
- 4月1,我被谷歌鸟幽默了一下。
- exec函数
- 多进程中使用chdir()遇到的问题
- uart编程
- 软件构架师需要什么技能?
- 怎么来理解管道?
- CentOS 6.0安装phpMyAdmin的简单步骤
- Linux系统调用列表
- linux系统调用全解
- PID Servomotor Control
- MVVM模式非常不错的例子
- 乱了
- Apache+Tomcat集群配置
- 关于实体类对象与XML的转换