我正在编写自己的shell,我遇到了关于流程化的问题。
我正确地处理两个过程,例如:
ls -l | sort -r
但是当我有三个命令时,我不知道该怎么做。
我有三种方法:
run_first:
dup2(pfd[1], 1);
close(pfd[0]);
execvp(cmd[0], cmd);
run_mid:
dup2(pfd[1], 1);
dup2(pfd[0], 1);
execvp(cmd[0], cmd);
和run_last:
dup2(pfd[0], 0);
close(pfd[1]);
execvp(cmd[0], cmd);
perror(command_list[i][0]);
这些基本上是重要的部分,我无法在这三种方法中实现我的逻辑,
我希望run_first的输出应该是run_mid的输入,我想将run_mid的输出传递给run_last。
答案 0 :(得分:1)
如果有三个命令,则需要两个管道,一个用于将第一个命令连接到第二个命令,另一个用于将第二个命令连接到第三个命令。 (毕竟,命令行看起来像first | mid | last
。)