管道无法正常工作

时间:2016-02-29 23:15:06

标签: c++ unix pipe

我的目标是获取第一个命令的输出并将其用作第二个命令的输入,但问题是它只是通过我的父条件,(pid> 0),而不是孩子。我试过在父母中重复,但它没有用。任何帮助将不胜感激!万一你想知道,我在C:

这样做
int pipe_a1[2];
int pipe_a2[2];
command1 = {'ls','-a'}
command2 = {'cat','newFile'}

if (pipe(pipe_a1) < 0 || pipe(pipe_a2) < 0) {
    cout << "pipe failed." << endl;
    exit(1);
}
    pid = fork()
    if (pid == 0) {
      close(pipe_a1[1]);
      close(pipe_a2[0]);
      dup2(pipe_a1[0], STDIN_FILENO);
      dup2(pipe_a2[1], STDOUT_FILENO);
      execvp(command2[0],command2)

    } else if(pid > 0) {
      close(pipe_a1[0]);
      close(pipe_a2[1]); 
      execvp(command1[0],command1)
    } else {
      printf("Fork Failed");
    }

0 个答案:

没有答案