首页 > 解决方案 > C++ 使用 fork() 和 pipe() 并行运行 2 个程序并获取输入/输出

问题描述

我现在正在学习 C++ 上的进程编程,现在我有一个关于 fork() 和 pipe() 的问题。

我需要并行运行两个程序,程序A的标准输出连接到B的标准输入,B的标准输出连接到A的标准输入。

对于这个特定的问题,我应该有 2 个管道吗?我怎样才能递归地运行它们?你们中的任何人都可以给我一个例子吗?非常感谢。

编辑:我得到了类似的东西,但它没有用。

int pipe1[2];
int pipe2[2];
pipe(pipe1);
pipe(pipe2);

pid = fork();
if (pid == 0) {
    dup2(pipe1[0], 0);
    close(pipe1[1]);
    close(pipe1[0]);

    dup2(pipe2[1], 1);
    close(pipe2[0]);
    close(pipe2[1]);

    execvp(A[0],A);
} else {
    dup2(pipe2[0], 0);
    close(pipe2[0]);
    close(pipe2[1]);

    dup2(pipe1[1], 1);
    close(pipe1[1]);
    close(pipe1[0]);

    execvp(B[0],B);
}

标签: c++processpipefork

解决方案


推荐阅读