Hoy me puse desprevenido por gdb
:
Program exited with code 0146.
gdb
imprime el código de retorno en octal ; buscando por qué encontré:
http://comments.gmane.org/gmane.comp.gdb.devel/30363
Pero esa no es una respuesta particularmente satisfactoria. Algunas búsquedas rápidas en Google no revelaron la historia, por lo que esperaba que alguien en SO supiera la historia de fondo.
Una pregunta algo relacionada, ¿cómo se vería el código de retorno en octal? ¿Quizás las máquinas más antiguas siempre imprimen el código de retorno?
$ printf %o\\n $?
Es bastante incómodo :)
$?
es el valor del shell para el código de retorno y es un dígito decimal (¿o gdb también admite su cmd de ejemplo?). No sé por qué gdb lo informa en octal. Mi solución es salir del olman ascii
para ver qué significan los valores octales. Pregunta interesante, ya que también te encuentras con valores octales de otros programas. Tal vez se discuta en Kernighan y Pike 'Unix Programming Envioronment'. Buena suerte.man ascii
no sería útil para convertir octal a decimal.bc
Sería una mejor opción.Respuestas:
La representación octal facilita la interpretación del código de salida para valores pequeños, que son los más utilizados. Si este número, que es un byte, se imprime en decimal, encontrar qué señal interrumpió un proceso requeriría un poco de cálculo mientras está en octal, se pueden leer tal como están:
gdb
muestra05
lo que no hace ninguna diferenciaSIGINT
( Control+ C),gdb
pantallas0202
que es más fácil de reconocer como señal # 2 que130
.Además, el estado de salida también puede ser una máscara de bits y, en tal caso, octal (al menos cuando está acostumbrado, que era más común hace un par de décadas que en la actualidad) es más fácil de convertir mentalmente en bits que decimal o incluso hexadecimal, al igual que, por ejemplo,
chmod
todavía aceptar un número octal para representar los permisos de archivos:0750 = 111 101 000 = rwx r-x ---
.fuente
No tengo una copia de este texto y acabo de leer la breve reseña disponible en google books pero. De acuerdo con la guía de portabilidad X / Open Sistema V Comandos y utilidades de especificación pág. 283 (según google books)
si una aplicación finaliza de manera anormal, su estado de salida es octal 0200 + y hay una lista de valores comunes de 'estado' (que probablemente también se dan en octal).
Por lo tanto, es / era un mensaje de error del hombre pobre.
fuente