質問

退出した子プロセスをチェックし、出口が出た場合は再起動するプログラムを作成しようとしています。他のプロセスが終了するのを待つことなく、プロセスが終了時に再起動する必要があります。私は少し迷っています。これが私がこれまでに行ったコードです。実際には終了したり正しかったりしていません。しかし、おそらく誰かが私を正しい方向に向けることができますか?

for(int ifile = 1; ifile < 4; ifile++){

    child_pid[ifile - 1] = vfork();

    if(child_pid[ifile - 1] == -1){
        cerr << "fork error on " << argv[ifile] << endl;
    }
    else if(child_pid[ifile - 1] == 0){
        execl(argv[ifile], argv[ifile], NULL);
    }
}

for(int index = 0; index < 3; index++){
    do{
        wait_pid = waitpid(child_pid[index], &status, WUNTRACED);
        if(WIFEXITED(status)){
            count++;
            child_pid[index] = vfork();
            if(child_pid[index] == -1){
                cerr << "rescheduled process error" << endl;
                return -1;
            }
            else if(child_pid[index] == 0){
                cout << "Rescheduling " << argv[index + 1] << endl;
                execl(argv[index + 1], argv[index + 1], NULL);
            }
        }
    }while(count != 4);
}

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top