Eu executei um executável em bash
./code > log
Ele mostra mensagens de erro ocasionais no terminal, enquanto todas as instruções printf entram no arquivo de log. Volto a executá-lo como abaixo
./code >& log
Agora, as mensagens de erro ocasionais também entram no log. Mas se houver uma falha de segmentação, ela ainda será mostrada no terminal. Por quê? Como fazer com que a mensagem Segmentation fault (core dumped)
entre no arquivo de log?
usuário $ bash --version
Lançamento do GNU bash, versão 4.2.24 (1) (i686-pc-linux-gnu)
fonte
help trap
trap
comando shell intercepta os sinais enviados para o shell . Portanto, não funcionará para capturar o que está sendo enviado ao seu programa.A mensagem "falha de segmentação" é impressa no stderr, mas é o erro padrão do shell, não o erro padrão do programa. O shell imprime esta mensagem quando detecta que o programa foi finalizado devido a um sinal.
Você pode silenciar a mensagem redirecionando stderr ao redor da parte do script de shell que executa o programa:
fonte