typedef void (*sighandler_t)(int);
sighandler_t bsd_signal(int signum, sighandler_t handler);
La différence entre les deux est que bsd_signal() garantit de fournir une sémantique de signal fiable qui est : a) la disposition du signal n'est pas réinitialisée lorsque le gestionnaire est invoqué ; b) la délivrance d'autres instances du signal est bloquée tant que le gestionnaire est en cours d'exécution ; c) si le gestionnaire interrompt un appel système bloquant, l'appel système est automatiquement redémarré. Une application portable ne peut pas se fier à signal(2) pour fournir ces garanties.
Sur les systèmes Linux modernes, bsd_signal() et signal(2) sont équivalents. Mais sur des systèmes plus anciens, signal(2) fournit une sémantique de signal non fiable ; voir signal(2) pour les détails.
L'utilisation de sighandler_t est une extension GNU ; ce type n'est défini que si la macro de test de fonctionnalités _GNU_SOURCE est définie.
Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 7 novembre 2007 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 bsd_signal ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Dernière mise à jour : 17 juillet 2008