我想知道如何通过递归或循环使这段代码通用。到目前为止,我只是嵌套了 if else 语句,这些语句无论如何看起来都不通用,并且会扩展并使用更多管道进一步缩进。if 语句中的代码可以概括,我对此没有任何问题。当 else 子句需要执行 if 子句时,如果有意义的话,我对如何设置某种递归感到非常困惑。这是我的代码
if (fork() == 0)
{
dup2(pipes[1], 1);
close(pipes[0]);
close(pipes[1]);
close(pipes[2]);
close(pipes[3]);
execvp(*cat_args, cat_args);
}
else if (fork() == 0)
{
dup2(pipes[0], 0);
dup2(pipes[3], 1);
close(pipes[0]);
close(pipes[1]);
close(pipes[2]);
close(pipes[3]);
execvp(*grep_args, grep_args);
}
else if (fork() == 0)
{
dup2(pipes[2], 0);
close(pipes[0]);
close(pipes[1]);
close(pipes[2]);
close(pipes[3]);
execvp(*cut_args, cut_args);
}