J'ai exécuté un exécutable dans bash
./code > log
Il affiche des messages d'erreur occasionnels sur le terminal tandis que toutes les instructions printf vont dans le fichier journal. Je le relance comme ci-dessous
./code >& log
Maintenant, les messages d'erreur occasionnels vont également dans le journal. Mais s'il y a un défaut de segmentation, il est toujours affiché sur le terminal. Pourquoi? Comment faire entrer le message Segmentation fault (core dumped)
dans le fichier journal?
utilisateur $ bash --version
GNU bash, version 4.2.24 (1) -release (i686-pc-linux-gnu)
la source
help trap
trap
commande shell intercepte les signaux envoyés au shell . Il ne fonctionnera donc pas pour attraper celui qui est envoyé à votre programme.Le message "défaut de segmentation" est imprimé sur stderr, mais c'est l'erreur standard du shell, pas l'erreur standard du programme. Le shell imprime ce message lorsqu'il détecte que le programme s'est terminé à cause d'un signal.
Vous pouvez désactiver le message en redirigeant stderr autour de la partie du script shell qui exécute le programme:
la source