漫画:什么是Linux管道

后记:这篇小短文主要说了一下Linux管道的工作原理,管道是Linux中很重要的一种通信方式,它可以把一个程序的输出直接连接到另一个程序的输入,我们日常使用的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,还有一个有名字的管道,叫named pipe或者fifo(先进先出),用mkfifo()就可以创建。

实际上,管道是一个固定大小的buffer,使用这个buffer时也会带来问题,比如在写管道时可能变满,当这种情况发生时,随后对管道的write()调用将默认地被阻塞,等待某些数据被读取,以便腾出足够的空间供write()调用写。读取进程也可能工作得比写进程快。当所有当前进程数据已被读取时,管道变空。当这种情况发生时,一个随后的read()调用将默认地被阻塞,等待某些数据被写入。

眼尖的同学可能已经看出来了,文章的最后三幅图来源于《Unix环境高级编程》,它和《Unix网络编程》一样,都是值得放在案头,随时翻阅的好书。

你看到的漫画只是冰山一角,在公众号回复关键字“漫画”可以看到更多精彩文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值