通常,Unix 中的管道用于连接两个命令,并使用第一个命令的输出作为第二个命令的输入。然而,我最近提出了使用管道并行运行多个命令的想法(这可能不是新的,但我没有找到太多的谷歌搜索),如下所示:
command1 | command2
Run Code Online (Sandbox Code Playgroud)
如果不从标准输入读取并且不写入标准输出,这将并行调用command1
和。说明这一点的最小示例是(请在交互式 shell 中运行它)command2
command2
command1
ls . -R 1>&2|ls . -R
Run Code Online (Sandbox Code Playgroud)
我的问题是,使用管道以这种方式并行执行两个命令有什么缺点吗?这个想法有什么我遗漏的吗?
非常感谢您提前。
命令管道已经并行运行。使用命令:
command1 | command2
Run Code Online (Sandbox Code Playgroud)
双方command1
并command2
已启动。如果command2
被调度并且管道是空的,它会阻塞等待读取。如果command1
尝试写入管道及其已满,则command1
阻塞直到有空间写入。否则,command1
和command2
并行执行,写入和读取管道。
归档时间: |
|
查看次数: |
777 次 |
最近记录: |