C- qu’est-ce exactement que SIGUSR1 syntaxiquement

Lorsque j’utilise SIGUSR1 dans les fonctions kill () ou signal (), que fait-il? Est-ce une macro? J’ai lu qu’il était défini par l’utilisateur, mais où est-il défini? Puis-je créer un SIGUSR10 (ou créer par programme un “tableau” de différents types de signaux)?

Les signaux définis par l’utilisateur signifient que ces signaux n’ont pas de signification définie contrairement à SIGSEGV , SIGCONT , SIGSTOP , etc. Le kernel n’enverra jamais SIGUSR1 ou SIGUSR2 à un processus. Vous pouvez donc définir la signification du signal en fonction des besoins de votre application. . Toutes ces constantes SIG majuscules sont en fait des macros qui se développeront en un entier indiquant un numéro de signal dans l’implémentation particulière. Bien que les signaux définis par l’utilisateur ne doivent pas nécessairement être définis, les numéros de signaux sont déjà fixés dans une mise en œuvre particulière et peuvent être réutilisés en toute sécurité car ils ne seront envoyés par rien, sauf par l’utilisateur.

Traditionnellement, il existe deux signaux définis par l’utilisateur: SIGUSR1 et SIGUSR2 . Cependant, les implémentations récentes ont quelque chose appelé “les signaux POSIX en temps réel” qui offrent plusieurs autres signaux définis par l’utilisateur.

Comme son nom l’indique, SIGUSR est un signal réservé à l’utilisateur (développeur), sans signification prédéfinie “spéciale”. Vous ne pouvez pas en créer dix. Sur la plupart des systèmes POSIX, il en existe exactement deux: SIGUSR1 et SIGUSR2.

Le symbole lui-même peut ou peut ne pas être une expansion de macro, mais finira par être une atsortingbution de valeur numérique compatible avec int.

Pour l’utiliser de manière significative, vous devrez écrire un gestionnaire de signal. Reportez-vous à la page de manuel signal () pour savoir comment procéder.