0
有人可以帮我回答这个问题: 指令序列(系统调用)是什么,它允许bash进程解释并执行命令 p1 | p2,p1和p2是两个可执行文件。Bash代码执行p1 | p2
有人可以帮我回答这个问题: 指令序列(系统调用)是什么,它允许bash进程解释并执行命令 p1 | p2,p1和p2是两个可执行文件。Bash代码执行p1 | p2
这看起来像一个很好的解释:https://brandonwamboldt.ca/how-linux-pipes-work-under-the-hood-1518/
TL; DR:
主进程(例如bash)的创建使用pipe()
系统调用,它返回存储在两个文件描述符的管。
然后它(bash)fork()
s并为每个程序创建两个子进程。
在每个子进程中,使用dup2(pipefd[READ-or-WRITE],stdinorout)
修改的标准输入或输出文件描述符(管道)。
最后,在子进程中执行所需程序(p1
或p2
),并读取(或写入)管道。
下一次尝试谷歌:https://unix.stackexchange.com/questions/37508/in-what-order-do-piped-commands-run,“|”被称为管道! –
我确切地知道什么|意味着如何在Linux中使用管道。 – Emy
我的问题是关于由bash执行的指令执行命令 – Emy