1. 管道的基本概念
在进入正式的学习之前,想一想管道为什么叫管道,也想一想生活中有什么跟管道相关的? 比如水管,水通过水管从一端流向另一端,那么进程间通信是不是可以模仿这种“流向”的关系呢, 很显然是可以的,数据可以从一个进程流向另一个进程,那么一个进程产生数据,然后通过管道发送给另一个进程, 另一个进程从管道的另一端读取出数据,这样一来就实现了进程间的通信了。
在上一章中,我们学过信号,一个信号从进程中产生,发送给另一个进程,这其实也是信号类型的通信, 不过由于只传递信号值,没有数据传递,在很多时候无法满足我们的需求, 因此管道传输数据的功能在某些场合会很有优势。
我们可以首先做个试验,在终端中使用以下命令:
ps -aux | grep root
# 输出
root 1 0.0 0.0 225376 6376 ? Ss 10月18 0:31 /sbin/init
root 2 0.0 0.0 0 0 ? S 10月18 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I< 10月18 0:00 [kworke