URL: https://linuxfr.org/users/serge_ss_paille/journaux/sigusr1-sigusr2-sigusr_n Title: SIGUSR1, SIGUSR2,..., SIGUSR_N ? Authors: serge_sans_paille Date: 2023年05月10日T17:13:02+02:00 License: CC By-SA Tags: c Score: 12 Demati'Nal, À la lecture de `signal(7)`, on se rend compte que deux signaux sont réservés pour les signaux utilisateurs `SIGUSR1` et `SIGUSR2`. Deux, c'est peu. Je vous propose donc cette technique qu'on baptisera le *signal knocking* par analogie au [[Port_knocking]] ```c #include #include #include #include int signalvalue = 0; void sigusr1handler(int signum); void sigusr2handler(int signum); void sigusr1handler(int signum) { ++signalvalue; } void sigusr2handler(int signum) { switch(signalvalue) { case 0: puts("action 0"); break; case 1: puts("action 1"); break; case 2: puts("action 2"); break; case 3: puts("action 3"); break; } } int main() { signal(SIGUSR1, sigusr1handler); signal(SIGUSR2, sigusr2handler); while(1) sleep(10); return 0; } ``` Et voilà, on peut faire les traitements qu'on veut suivant la séquence de `SIGUSR` qu'on envoie :-)

AltStyle によって変換されたページ (->オリジナル) /