Ejecuté un ejecutable en bash
./code > log
Muestra mensajes de error ocasionales en el terminal, mientras que todas las declaraciones printf van al archivo de registro. Lo vuelvo a ejecutar como a continuación
./code >& log
Ahora, los mensajes de error ocasionales también entran en el registro. Pero si hay una falla de segmentación, todavía se muestra en la terminal. ¿Por qué? ¿Cómo hacer que el mensaje Segmentation fault (core dumped)
vaya al archivo de registro?
usuario $ bash --version
GNU bash, versión 4.2.24 (1) -release (i686-pc-linux-gnu)
fuente
help trap
trap
comando de shell atrapa las señales enviadas al shell . Por lo tanto, no funcionará detectar el que se envía a su programa.El mensaje de "fallo de segmentación" se imprime en stderr, pero es el error estándar del shell, no el error estándar del programa. El shell imprime este mensaje cuando detecta que el programa ha finalizado debido a una señal.
Puede silenciar el mensaje redirigiendo stderr alrededor de la parte del script de shell que ejecuta el programa:
fuente