我制作了一个程序,它接受用户输入的两个命令,并将第一个命令通过管道传输到第二个。如果输入了真正的命令,它工作正常,但是当我只输入随机单词时,我无法让我的错误检查工作。在我使用 exit() 的代码的大多数地方,进程都可以正常终止,但在两个子进程 rs1 和 rs2 中,我无法退出。我是流程新手,所以我不确定如何正确执行此操作。有人可以帮忙吗?
int main()
{
while(true)
{
int argc1=0,argc2=0,rs1,rs2,pipefd[2];
char input1[80],input2[80],*argv1[6],*argv2[6],*p1,*p2;
//*Big block of code that receives input goes here*
pipe(pipefd);
rs1=fork();
rs2=fork();
if(rs1==0)
{
close(pipefd[0]);
close(1);
dup(pipefd[1]);
close(pipefd[1]);
rs1=execvp(argv1[0],argv1);
if(rs1==-1)
{
perror(argv1[0]);
exit(rs1); //Here is where I'm having the problem
}
}
if(rs2==0)
{
close(pipefd[1]);
close(0);
dup(pipefd[0]);
close(pipefd[0]);
rs2=execvp(argv2[0],argv2);
if(rs2==-1)
{
perror(argv2[0]);
exit(rs2); //Here also does not work correctly
}
}
close(pipefd[0]);
close(pipefd[1]);
wait(&rs1);
wait(&rs2);
}
return 0;
}