終了した子プロセスをチェックし、終了した場合はそれらを再起動するプログラムを作成しようとしています。他のプロセスが終了するのを待たずに、プロセスが終了するときにプロセスを再起動する必要があります。私は少し迷っています。これが私がこれまでに行ったコードです。本当に、それは終わっていないか、正しくありません。しかし、おそらく誰かが私を正しい方向に向けることができますか?
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);
}