我正在实现一个shell,我让一切都运行得很好。我现在面临的问题是如何管理多个管道?例如ls -a -l -F | tr [a-z] [A-Z] |排序
问题:我有这个数组,我想分开命令,以便我可以处理每个进程
args[0]= ls
args[1]= -a
args[3]= -l
args[4]= -F
args[5]= |
args[6]= tr
args[7]= [a-z]
args[8]= [A-Z]
args[9]= |
args[10]= sort
我每次找到'|'时如何分离命令?所以我最终得到这样的东西
args1[0]= ls
args1[1]= -a
args1[3]= -l
args1[4]= -F
args2[0]= tr
args2[1]= [a-z]
args2[2]= [A-Z]
args3[0] = sort
非常感谢您的帮助,非常感谢任何反馈
答案 0 :(得分:3)
你需要多个管道。每个管道将从流程 n 获取标准输出,并将其提供给流程 n + 1 的标准输入。您不能共享管道,否则您的stdout将在进程之间交错。
This response对类似的问题可能有用。