用unix来代替||

时间:2018-06-26 13:31:53

标签: unix pipe fork

我正在读what's a pipe in an operating system,有些东西我听不懂。

采用一系列以Unix字符分隔的命令,例如

cat file | grep "something"

处理管道|时会发生什么?我知道可以通过pipe()函数打开一个Unix管道,但是我看不到在其中涉及的任何过程中都将如何发生“分支”。

会发生什么,如何使用fork(如果有)?

1 个答案:

答案 0 :(得分:0)

对于您的情况,实际上发生了两个 es3调用:一个调用fork,一个调用cat

需要grep调用,因为POSIX中执行程序的唯一标准方法是使用fork系列调用,而这些替换当前过程映像使用来自已加载程序的图像。而且,如果外壳程序不对其执行的每个命令exec进行新处理,则第一个运行的程序将替换外壳程序,并且该外壳程序将不再存在。

已设置管道,以便将管道的写端连接到第一个子进程的标准输出(fork命令),并将管道的读端连接到第二个子进程的标准输入(cat命令)。

所有这些都是在shell幕后发生的。