c++ - 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);
}
解决方案
推荐阅读
- vue.js - VueX Getter 从数组中过滤唯一 id
- azure - Azure - 将 Web 作业从 ASE 迁移到 Kubernetes (AKS) 的迁移选项
- android - 永久模糊更改位图
- reactjs - ReactJS fetchAPI JSON 类型 - TypeError:content.forEach 不是函数
- css - 为什么在 Vue 组件的样式中添加 lang=less 会改变现有行为?
- memory - JVM 已用内存与实际堆内存差异很大(G1GC)
- azure-devops - VSTS Microsoft 托管代理:虚拟机大小
- ios - iOS 状态栏变色动画
- javascript - 奇怪的javascript行为(将循环分配给变量?)
- ajax - GET http://localhost:8005/context.blade.php 404(未找到)