Bash intructions执行p1 | p2

时间:2017-06-17 12:52:53

标签: linux bash pipe

有人可以帮我回答这个问题: 什么是允许bash进程解释和执行命令的指令序列(系统调用) p1 | p2,p1和p2是两个可执行文件。

1 个答案:

答案 0 :(得分:0)

这看起来很好解释:https://brandonwamboldt.ca/how-linux-pipes-work-under-the-hood-1518/

tl;博士:

  1. 主进程(例如bash)使用pipe()系统调用创建一个管道,它返回存储在int pipefd[2]中的两个文件描述符。

  2. 然后它(bash)fork()并为每个程序创建两个子进程。

  3. 在每个子进程中,使用dup2(pipefd[READ-or-WRITE],stdinorout)修改的标准输入或输出文件描述符(管道)。

  4. 最后,在子进程中执行所需的程序(p1p2)并读取(或写入)管道。