Question

J'essaie d'écrire un programme qui vérifie les processus des enfants sortants et les redémarre s'ils sont sortis. Il doit redémarrer les processus au fur et à mesure qu'ils sortent, sans attendre que d'autres processus soient sortis. Je suis un peu perdu. Voici le code que j'ai fait jusqu'à présent. Ce n'est pas fini ou correct, vraiment. Mais peut-être que quelqu'un peut me diriger dans la bonne direction?

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);
}

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top