J'ai un script bash qui exécute un programme de simulation écrit en Fortran 90, et toutes les sorties sont redirigées vers un fichier. Si le programme se termine sans problèmes, je définis un paramètre de succès. Le code ressemble à ceci:Comment puis-je supprimer la sortie due à un SIGSEGV ou à un SIGFPE dans un programme Fortran 90?
#!/bin/bash ... echo -n "Running program..." ./sim_program >& file && success="true" if [ $success ]; then echo "OK" else echo "NOT OK" fi ...
La sortie à l'écran doit être « programme en cours ... OK » ou « programme en cours ... PAS OK ». Dans certains cas, le programme de simulation se bloque avec une exception à virgule flottante ou une erreur de segmentation, et les signaux correspondants sont envoyés (SIGSEGV/SIGFPE). La sortie peut alors ressembler à ceci:
:~>execute_script Running program.../path/to/script: line 232: 15350 Floating Point Exception ./sim_program >& file && success="true" NOT OK
Comment puis-je supprimer la sortie d'erreur en raison de la SIGFPE ou SIGSEGV telle que je reçois
:~>execute_script Running program... NOT OK
même quand il y a une telle erreur? J'ai examiné en utilisant un piège, par exemple.
trap "" SIGSEGV SIGFPE ./sim_program >& file && success="true" trap SIGSEGB SIGFPE
mais je reçois toujours quelque chose comme
:~>execute_script Running program... Floating Point Exception NOT OK
Toute aide est appréciée!
Merci, ça a marché! :) –