管道和信号一样,也是进程通信的方式之一。匿名管道,也称为管道符(“|”),用来把上一个命令的输出当成下一个命令的输入。使用vim pipeContent.txt,把下边的内容
1 11
2 22
3 33
4 44
5
6
7
8
9
写到Redirect.txt文件里边,要是不知道怎么使用vim新建文件并写入内容,可以参考我的一篇文章《Linux学习之vim在光标所在处写入内容,保存退出》。
 
cat pipeContent.txt显示如上,把pipeContent.txt所有内容都显示出来了。
 cat pipeContent.txt | grep "44"就可以只把第4行所有内容显示到标准输出上边,grep的作用就是进行字符串匹配。
 
执行cat | ps -f,可以看到17726和17727拥有同一个父进程。
 
再打开一个终端,称为B终端,然后执行ls -l /proc/17726/fd和ls -l /proc/17727/fd,可以看到下边的内容。
 
在/proc/pid(编号)/fd一般有以下三个链接:
0 – stdin (standard input) 标准输入
1 – stdout (standard output) 标准输出
2 – stderr (standard error) 标准错误输出
可以看到17726的输出链接到了管道上边了。而由于进程17727,即ps -f已经结束了,所以无法看到/proc/17727/fd底下的内容了。
在执行cat | ps -f的终端按下Ctrl+c,结束命令。
 
需要注意的是有内置命令的话,不会传递结果给父进程,使用管道符的时候,尽量规避内置命令。
此文章为7月Day 10学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。





![[Docker] Docker学习和基本配置部署(一)](https://img-blog.csdnimg.cn/5ccf742ebdcc4c9da18c17cbbe1af176.png#pic_center)













