C++ 我的叉子输出不正确

C++ 我的叉子输出不正确,c++,pipe,parent-child,C++,Pipe,Parent Child,我正在尝试创建一个程序,创建2个子进程和4个管道(我知道这并不理想,但这个特定任务的规范需要它)。虽然它对5个命令行参数整数中的两个进行了正确排序,但其余的都是我认为未初始化的整数,即7被打印为33234951 我对管道还很陌生,所以我认为这个问题与此有关,而不是代码中的任意错误 我只用了一个家长和一个孩子就成功地完成了这项工作,但当我尝试实现多个时,事情就变得很危险了 我有很多没用过的东西,只是为了解决问题而胡乱摆弄 #包括 #包括 #包括 #包括 #包括 #包括 #包括 int main(i

我正在尝试创建一个程序,创建2个子进程和4个管道(我知道这并不理想,但这个特定任务的规范需要它)。虽然它对5个命令行参数整数中的两个进行了正确排序,但其余的都是我认为未初始化的整数,即7被打印为33234951

我对管道还很陌生,所以我认为这个问题与此有关,而不是代码中的任意错误

我只用了一个家长和一个孩子就成功地完成了这项工作,但当我尝试实现多个时,事情就变得很危险了

我有很多没用过的东西,只是为了解决问题而胡乱摆弄

#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main(int argc,字符**argv){
printf(“启动\n”);
pid_t pid;
pid_t pid2;
int-mypipe0[2];
int mypipe1[2];
int mypipe2[2];
int mypipe3[2];
管道(mypipe0);
管道(mypipe1);
管道(mypipe2);
管道(mypipe3);
/*创建子进程*/
pid=fork();

std::cout当第一次
fork
调用失败时,到达
else
分支

您当前的代码结构是

pid=fork();
如果(pid==0)
{
runFirstChild();
}
否则,如果(pid>1)
{
runParent();
}
else//除非发生故障,否则不会执行此分支
{
pid2=fork();
如果(pid2==0)
{
runSecondChild();
}
}
你应该像这样组织它

pid=fork();
如果(pid==0)
{
runFirstChild();
}
否则,如果(pid>1)
{
pid2=fork();//fork父进程中的第二个子进程
如果(pid2==0)
{
runSecondChild();
}
否则如果(pid2>1)
{
runParent();
}
}

小心使用
#include
它比您希望它做的要多得多。它是预编译头的支持文件,您不打算直接包含它。误用它会使您的代码编译得更慢,而不是提供正确使用时应该得到的加速。而不是
pipe1
pipe4
你应该在这里使用一个数组。这段代码的长度至少是需要的两倍,这是由于变量的选择而无法避免的大量重复。这段代码还迫切需要一些函数来将其拆分为更小、更容易理解的部分,每个部分都有特定的用途。你认为最高层是什么时候
否则
分支被采用了吗?还是值得将其分割成函数,以便更好地将大问题分解成小问题。@tadman谢谢您的输入,我现在就开始做。