He probado esos comandos.
~$top (ctrl + z)stopped the process ~$echo $? 147 ~$top (ctrl + c)killed the process ~$echo $? 0
Qué sucedió aquí, explíquelo y por qué muestra un valor constante. Cuál es el significado de esos valores.
$?
es el código de retorno del último proceso ejecutado. 0 significa que no ocurrió ningún error. Otros valores representan algún tipo de condición inusual.
Los valores de 128 y superiores suelen representar algún tipo de señal. 147 - 128 = 19, lo que significa que el programa recibió la señal 19 ( SIGSTOP
en Linux). Ahora, normalmente al presionar ^Z se envía SIGTSTP
(una señal diferente de SIGSTOP
), lo que probablemente significó que top
captó esa señal, realizó una limpieza (probablemente relacionada con la terminal) y volvió a emitir SIGSTOP
para suspender el programa.
top
también atrapó SIGINT
(que normalmente se emite después de presionar ^ C), para hacer limpieza y salir limpiamente (con valor de salida 0).
Puede ejecutar kill -l
para ver cuáles son todos los números de señal para la plataforma actual. Tenga en cuenta que los números son diferentes para diferentes plataformas; por ejemplo, SIGSTOP
es 17 en Darwin y 19 en Linux.
echo $?
devuelve el valor de retorno (estado de salida) del último comando ejecutado (0 suele ser un success
).