有人可以帮我回答这个问题: 什么是允许bash进程解释和执行命令的指令序列(系统调用) p1 | p2,p1和p2是两个可执行文件。
答案 0 :(得分:0)
这看起来很好解释:https://brandonwamboldt.ca/how-linux-pipes-work-under-the-hood-1518/
tl;博士:
主进程(例如bash)使用pipe()
系统调用创建一个管道,它返回存储在int pipefd[2]
中的两个文件描述符。
然后它(bash)fork()
并为每个程序创建两个子进程。
在每个子进程中,使用dup2(pipefd[READ-or-WRITE],stdinorout)
修改的标准输入或输出文件描述符(管道)。
最后,在子进程中执行所需的程序(p1
或p2
)并读取(或写入)管道。