Pourquoi il n'y a que deux signaux définis par l'utilisateur?

11

Dans la liste des signaux définis dans un système Linux, il y a deux signaux indiqués comme signaux définis par l'utilisateur ( SIGUSR1et SIGUSR2). D'autres signaux seront émis ou capturés dans des situations spécifiques, mais les SIGUSR sont laissés à l'usage de l'application utilisateur.

Alors pourquoi seulement deux signaux?

saeedn
la source

Réponses:

13

Historiquement, Unix avait que ces deux signaux, mais les systèmes modernes ont les signaux en temps réel SIGRTMIN... SIGRTMAX.

En raison de la sémantique farfelue et non transférable des API de signal, il n'y a presque aucun cas d'utilisation où les signaux seraient préférables par rapport à d'autres mécanismes de communication comme les tuyaux. Par conséquent, l'attribution d'un nouveau numéro de signal n'a jamais été considérée comme nécessaire.

CL.
la source
Merci. Dans mon cas, je gère SIGUSR1 pour la reconfiguration. Cela signifie que lorsque l'administrateur souhaite modifier la configuration de mon processus en cours, il modifie le fichier de configuration et envoie un SIGUSR1 à mon PID (plus facile à utiliser un tuyau ici). Et j'utilise SIGUSR2 pour l'arrêt du processus propre. Il n'était pas devenu nécessaire pour moi d'utiliser un signal autre que ces deux-là, mais certaines fonctionnalités d'exécution pouvaient être implémentées en gérant d'autres signaux définis par l'utilisateur!
saeedn
2
@saeedn Pourquoi n'utilisez-vous pas SIGTERM pour l'arrêt du processus propre? C'est pour ça. De nombreux autres serveurs utilisent SIGHUP (qui n'a d'autre signification que sur un processus interactif) comme signal pour recharger les fichiers de configuration, vous pouvez donc envisager cela.
Random832
@ Random832 Vous avez raison, je sais ce que vous dites. Mais le problème auquel je pensais était que si je manquais de 31 choix de signaux?
saeedn
1
Où puis-je obtenir plus d'informations sur les signaux SIGRTMIN ... SIGRTMAX? Où sont-ils définis lorsqu'ils sont utilisés?
Strubbl
6

Les signaux ne fournissent qu'un moyen de communication primitif. En particulier, il n'y a aucun moyen de leur associer des informations. Le destinataire ne connaît que le numéro du signal, pas l'identité de l'expéditeur. Plusieurs signaux peuvent être confondus en un seul. Compte tenu de toutes ces restrictions, il n'y a pas beaucoup d'utilisations utiles pour les signaux.

À des fins plus complexes, utilisez des moyens d'interaction plus complexes, tels que des tuyaux ou des prises.

Gilles 'SO- arrête d'être méchant'
la source