Comment puis-je obtenir une description lisible par l’homme à partir d’un numéro de signal?

Le standard POSIX ou un autre standard C fournit-il un moyen de récupérer un message significatif à partir d’un numéro de signal, de la même manière que strerror() permet de récupérer un message depuis errno ? La bibliothèque Gnu C a strsignal() , mais si possible, j’aimerais quelque chose de portable vers BSD et d’autres variantes d’Unix.

Oui, il est intéressant de noter qu’il existe un moyen standard d’obtenir un message de chaîne à partir d’un signal dans POSIX. C’est par coïncidence, strsignal() . De POSIX.1-2008:

La fonction strsignal () doit mapper le numéro du signal en signum avec une chaîne définie par l’implémentation et lui renvoyer un pointeur. Il utilisera le même ensemble de messages que la fonction psignal ().

Un environnement qui ne vous fournit pas cette fonction n’est pas compatible POSIX. Bien que relativement nouveau (le numéro 7 est sorti en 2008), j’ai une page de strsignal() pour strsignal() sur Mac OS X , donc c’est bon signe.

Le tableau sys_siglist défini en externe contient les descriptions de signal pour chaque numéro de signal et constitue un problème standard sous BSD.

 #include  extern const char *const sys_siglist[];