1

ユーザーが入力した 2 つのコマンドを受け取り、最初のコマンドを 2 番目のコマンドにパイプするプログラムを作成しました。実際のコマンドを入力すると問題なく動作しますが、ランダムな単語を入力しただけではエラー チェックが機能しません。exit() を使用するコードのほとんどの場所で、プロセスは正常に終了しますが、2 つの子プロセス 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;
}
4

0 に答える 0