如何将UNIX中的errno转换为相应的字符串?

avd*_*avd 39 unix errno

在UNIX中是否有任何函数将errno转换为其对应的字符串,例如EIDRM到"EIDRM".调试以检查这些整数errnos的错误非常烦人.

atk*_*atk 69

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

仅供参考,以便您可以更轻松地找到这些内容:如果您键入man errno(或您正在调查的任何函数),并查看手册页的最底部,您将看到相关函数的列表.如果你们man每个人(根据他们的名字猜测哪一个先做)你会经常找到类似问题的答案.

  • 这些字符串实际上没那么有用,因为系统调用的手册页经常根据枚举代码指定错误行为.字符串充其量只是一个提示. (3认同)
  • 危险,威尔·鲁滨逊!strerror()的字符串是_localised_,正如我在检查错误字符串中的“没有这样的文件或目录”时发现的那样,但是我的用户平台却返回了“ Arquivo oudiretórionãoencontrado”。(这是不公开errno值的语言。) (2认同)

And*_*ikh 12

只是另一个解决方案,解决了你所遇到的问题,但在Python而不是C:

>>> import errno
>>> errno.errorcode[errno.EIDRM]
'EIDRM'
Run Code Online (Sandbox Code Playgroud)


Ste*_*ski 5

现在有一个与moreutils包一起分发的errno实用程序.