Linux学习之管道

管道和信号一样,也是进程通信的方式之一。匿名管道,也称为管道符(“|”),用来把上一个命令的输出当成下一个命令的输入。使用vim pipeContent.txt,把下边的内容

1 11
2 22
3 33
4 44
5
6
7
8
9

写到Redirect.txt文件里边,要是不知道怎么使用vim新建文件并写入内容,可以参考我的一篇文章《Linux学习之vim在光标所在处写入内容,保存退出》。
Linux学习之管道_第1张图片

cat pipeContent.txt显示如上,把pipeContent.txt所有内容都显示出来了。
cat pipeContent.txt | grep "44"就可以只把第4行所有内容显示到标准输出上边,grep的作用就是进行字符串匹配。
在这里插入图片描述

执行cat | ps -f,可以看到1772617727拥有同一个父进程。
在这里插入图片描述

再打开一个终端,称为B终端,然后执行ls -l /proc/17726/fdls -l /proc/17727/fd,可以看到下边的内容。
Linux学习之管道_第2张图片

/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,结束命令。
Linux学习之管道_第3张图片

需要注意的是有内置命令的话,不会传递结果给父进程,使用管道符的时候,尽量规避内置命令。

此文章为7月Day 10学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。

你可能感兴趣的:(Linux基础学习,linux,学习,运维)