如何将UNIX中的errno转换为相应的string?

在UNIX中是否有任何函数将errno转换为相应的string,例如EIDRM为“EIDRM”。 它非常烦人的debugging,以检查这些整数错误的错误。

strerror()应该这样做。 http://linux.die.net/man/3/strerror

仅供参考,以便您可以更轻松地find这些东西:如果您键入man errno(或您正在调查的任何函数),并查看手册页的最底部,则会看到相关函数的列表。 如果你对每一man都进行了分析(根据他们的名字猜测哪一个人要做),你会经常find类似问题的答案。

只是另一个解决scheme,确切地解决了你有问题,但在Python而不是C:

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

现在有一个分布在moreutils包中的errno实用程序。

我不确定这样的enum风格的名字,但是为了debugging和错误报告的目的,你可以使用perror(3)或者strerror(3) C函数来返回错误代码的可读expression。 有关更多详细信息,请参阅手册页。

如果你确实需要EIDRM而不是它的错误string:不。 但是,在OpenBSD上,

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

打印出一个很好的表格“… \ n89 EIDM \ n …”,您可以将其进一步转换为您希望具有此function的编程语言的数据结构。