Je fais connaissance avec les signaux en C. Je n'arrive pas à comprendre de quel type de signaux sont SIGUSR1
et SIGUSR2
et comment je peux les déclencher. Est-ce que quelqu'un peut me l'expliquer, s'il vous plaît ?
Réponses
Trop de publicités?Ils sont des signaux définis par l'utilisateur, donc ils ne sont déclenchés par aucune action particulière. Vous pouvez les envoyer explicitement par programmation :
#include
kill(pid, SIGUSR1);
où pid
est l'identifiant du processus destinataire. À l'extrémité réceptrice, vous pouvez enregistrer un gestionnaire de signaux pour eux :
#include
void my_handler(int signum)
{
if (signum == SIGUSR1)
{
printf("Reçu SIGUSR1!\n");
}
}
signal(SIGUSR1, my_handler);
Ils sont des signaux que les développeurs d'applications utilisent. Le noyau ne devrait jamais les envoyer à un processus. Vous pouvez les envoyer en utilisant kill(2)
ou en utilisant l'utilitaire kill(1)
.
Si vous avez l'intention d'utiliser des signaux pour la synchronisation, vous voudrez peut-être vérifier les signaux en temps réel (il y en a plus, ils sont mis en file d'attente, leur ordre de livraison est garanti, etc).