¿Hay alguna función en UNIX para convertir errno en su cadena correspondiente, por ejemplo, EIDRM a "EIDRM". Es muy molesto depurar para verificar si hay errores con estos enteros errnos.¿Cómo convertir errno en UNIX a la cadena correspondiente?
Respuesta
strerror()
debería hacerlo. http://linux.die.net/man/3/strerror
FYI, para que pueda encontrar estas cosas más fácilmente, usted mismo: si escribe man errno (o la función que esté investigando), y mira la parte inferior de la página de manual, verá una lista de funciones relacionadas. Si man
cada uno de ellos (adivinando cuál (es) primero hacer según sus nombres) a menudo encontrará la respuesta a preguntas similares.
no estoy seguro acerca de tales enum
nombres al estilo, pero para fines de depuración y de informes de error que puede utilizar perror(3)
o strerror(3)
funciones C que devuelven una representación legible del código de error. Por favor, consulte las páginas man para más detalles.
Pensé que perror() simplemente imprime en STDERR en lugar de convertir el número a un valor. ¿Recuerdo mal (y leí mal la página man)? – atk
Sí, 'perror' es un recurso de depuración para problemas relacionados con' errno' y escribe sus mensajes en 'STDERR'. –
Sólo otra solución que resuelve exactamente el problema que tiene, pero en Python en lugar de C:
>>> import errno
>>> errno.errorcode[errno.EIDRM]
'EIDRM'
Si realmente desea EIDRM y no su cadena de error: no. Sin embargo, en OpenBSD,
man errno|egrep ' [0-9]+ E[A-Z]+'|sed 's/^ *//'|cut -d' ' -f1,2
imprime una bonita mesa de "... \ n89 eIDM \ n ..." que se puede convertir además en una estructura de datos para el lenguaje de programación que desea tener esta función en.
Ahora hay una utilidad errno distribuida con el paquete moreutils.
- 1. Cómo convertir cadena a entero en UNIX
- 2. Conversión de cadena binaria a ASCII correspondiente
- 3. PHP: convertir cadena de fecha a fecha Unix
- 4. Cómo convertir ruta relativa a la ruta absoluta en Unix
- 5. Cómo convertir archivos de Dos a Unix
- 6. Cómo convertir errno a excepción usando <system_error>
- 7. Convertir dateTime a unix epoch en xslt
- 8. ¿Debo usar system_category o generic_category para errno en Unix?
- 9. Cómo convertir a la lista cadena
- 10. Cómo convertir BeautifulSoup.ResultSet a la cadena
- 11. convertir cadena a la fecha en GWT
- 12. MySQL convertir datetime a Unix timestamp
- 13. Convertir SVGSVGElemento a la Cadena
- 14. Cómo convertir cadena a larga
- 15. Cómo convertir cadena [] a ArrayList?
- 16. cómo convertir JSON a cadena
- 17. Convertir la marca de tiempo de unix a julian
- 18. Cómo convertir cadena a LPWSTR en C++
- 19. Convertir marca de tiempo Unix a la norma ISO 8601
- 20. cómo convertir cadena a byte [] en C#
- 21. Cómo convertir cadena a entero en C#
- 22. Convertir cadena a SecureString
- 23. ¿Convertir int a cadena?
- 24. Convertir cadena a Uri
- 25. cómo convertir una cadena a la fecha en mysql?
- 26. Cómo convertir el DataInputStream a la cadena en Java?
- 27. Convertir cadena a Enum?
- 28. Convertir cadena a la fecha - C#
- 29. Convertir XElement a cadena
- 30. cadena convertir a matriz
strerror en realidad los convertirá en cadenas mucho más útiles que solo "EIDRM" como se solicitó, pero esa es la respuesta que yo también habría dado. –
esas cadenas en realidad no son tan útiles, porque las páginas man para las llamadas al sistema a menudo especifican comportamientos de error en términos del código enum. La cadena es, en el mejor de los casos, una pista. – orm
¡Peligro, Will Robinson! Las cadenas de 'strerror()' están _localised_, como descubrí cuando estaba revisando una cadena de error para "No existe tal archivo o directorio" pero la plataforma de mi usuario devolvió "Arquivo ou diretório encontrado en su lugar". (Esto fue en un lenguaje donde el valor de errno en sí mismo no estaba expuesto.) –