Quelle est la meilleure façon de faire fonctionner C sous Linux pour configurer un programme capable de gérer plusieurs signaux POSIX avec la même fonction?Quelle est la bonne façon d'avoir une seule fonction de gestionnaire de signal pour plusieurs signaux?
Par exemple, dans mon code que j'ai une fonction de gestionnaire que je veux appeler génériquement quand jamais un signal est pris pour effectuer certaines actions:
/* Exit handler function called by sigaction */
void exitHandler(int sig, siginfo_t *siginfo, void *ignore)
{
printf("*** Got %d signal from %d\n", siginfo->si_signo, siginfo->si_pid);
loopCounter=0;
return;
}
J'ai mis en place deux signaux pour attraper en ayant sigaction individuelle appelle pour chaque signal:
/* Set exit handler function for SIGUSR1 , SIGINT (ctrl+c) */
struct sigaction act;
act.sa_flags = SA_SIGINFO;
act.sa_sigaction = exitHandler;
sigaction(SIGUSR1, &act, 0);
sigaction(SIGINT, &act, 0);
Est-ce la bonne façon de configurer ce type de manipulation? Existe-t-il un autre moyen de ne pas énumérer tous les numéros de signaux possibles?
Merci, c'est une bonne idée. Je suppose que je peux continuer à énumérer les signaux que je voudrais attraper, puisque je suis nouveau à C J'étais curieux de savoir s'il me manquait quelque chose. – ammianus