Si j'ai un programme de coordonnateur de parents et un programme de travailleur, mais le programme de coordinateur crée tous les processus de travail nécessaires. Si je veux implémenter la méthode alarm() correctement pour tuer tous les processus et terminer le programme après un certain laps de temps.Comment implémenter la méthode alarm() correctement pour tuer tous les processus de travail créés par fork()?
Est-ce la bonne façon de l'implémenter? La façon dont je l'ai actuellement, il affiche maintenant le message printf() correspondant au message pour les processus de travail en train d'être détruits.
Remarque: J'ai mis en œuvre l'ignorance des signaux d'interruption afin que plus de processus de travail puissent continuer sans souci.
int main(int argc, char** argv)
{
signal(SIGINT, sig_ctrl);
signal(SIGALRM, sig_alarm);
alarm(5);
sleep(10);
//rest of program which creates the needed processes
}
void sig_ctrl(int sig)
{
printf("Hold on buddy, you're not terminating this program with CTRL^C.\n");
}
void sig_alarm(int sig)
{
sleep(0);
fflush(stdout);
printf("The alarm is sounding, all worker procceses will be...TERMINATED!");
raise(SIGTERM);
}