Comment convertir errno sous UNIX en chaîne correspondante?

Existe-t-il une fonction sous UNIX pour convertir errno en sa chaîne correspondante, par exemple EIDRM en “EIDRM”. Il est très ennuyeux de déboguer pour vérifier les erreurs avec ces erreurs entières.

strerror() devrait le faire. http://linux.die.net/man/3/strerror

FYI, de sorte que vous pouvez trouver ces choses plus facilement, vous-même: Si vous tapez man errno (ou quelle que soit la fonction que vous étudiez), et regardez tout en bas de la page de manuel, vous verrez une liste de fonctions associées. Si vous man chacun de ceux-ci (en supposant quel (s) premier (s) faire en fonction de leur nom), vous trouverez souvent la réponse à des questions similaires.

Juste une autre solution qui résout exactement le problème que vous avez, mais en Python au lieu de C:

 >>> import errno >>> errno.errorcode[errno.EIDRM] 'EIDRM' 

Il y a maintenant un utilitaire d’erreur dissortingbué avec le paquet moreutils.

Je ne suis pas sûr de ces noms de style enum , mais pour le débogage et le signalement des erreurs, vous pouvez utiliser des fonctions C perror(3) ou strerror(3) qui renvoient une représentation lisible par l’homme du code d’erreur. Veuillez vous reporter aux pages de manuel pour plus de détails.

Si vous voulez vraiment EIDRM et non sa chaîne d’erreur: non. Cependant, sur OpenBSD,

 man errno|egrep ' [0-9]+ E[AZ]+'|sed 's/^ *//'|cut -d' ' -f1,2 

affiche une belle table de “… \ n89 EIDM \ n …” que vous pouvez convertir en une structure de données pour le langage de programmation dans lequel vous souhaitez avoir cette fonction.