【发布时间】:2010-04-07 03:58:10
【问题描述】:
假设在一个程序中我想执行两个进程,一个执行ls -al 命令,然后将结果传送到wc 命令,并在终端上显示输出。如何使用管道文件描述符来做到这一点?到目前为止我写的代码:
int main(int argc, char* argv[]) {
int pipefd[2];
int pipefd2[2];
pipe(pipefd2);
if ((fork()) == 0) {
dup2(pipefd2[1], STDOUT_FILENO);
close(pipefd2[0]);
close(pipefd2[1]);
execl("ls", "ls", "-al", NULL);
exit(EXIT_FAILURE);
}
if ((fork()) == 0){
dup2(pipefd2[0], STDIN_FILENO);
close(pipefd2[0]);
close(pipefd2[1]);
execl("/usr/bin/wc", "wc", NULL);
exit(EXIT_FAILURE);
}
close(pipefd[0]);
close(pipefd[1]);
close(pipefd2[0]);
close(pipefd2[1]);
}
举个例子会很有帮助。
【问题讨论】: