Как я могу подавить выходные данные из-за SIGSEGV или SIGFPE в программе Fortran 90?
У меня есть сценарий bash, который запускает программу моделирования, написанную на Fortran 90, и все выходные данные перенаправляются в файл. Если программа завершается без проблем, я устанавливаю параметр success. Код выглядит примерно так:
#!/bin/bash ... echo -n "Running program..." ./sim_program >& file && success="true" if [ $success ]; then echo "OK" else echo "NOT OK" fi ...
Вывод на экран должен быть либо " запущенная программа... OK " или " запуск программы... НЕ В ПОРЯДКЕ". В некоторых случаях программа моделирования аварийно завершает работу с исключением с плавающей запятой или ошибкой сегментации, и посылаются соответствующие сигналы (SIGSEGV / SIGFPE). Выходные данные могут выглядеть примерно так:
:~>execute_script Running program.../path/to/script: line 232: 15350 Floating Point Exception ./sim_program >& file && success="true" NOT OK
Как я могу подавить вывод ошибок из-за SIGFPE или SIGSEGV таким образом, что я получаю
:~>execute_script Running program... NOT OK
Даже когда есть такая ошибка? Я изучил использование ловушки, например
trap "" SIGSEGV SIGFPE ./sim_program >& file && success="true" trap SIGSEGB SIGFPE
Но потом я все равно получаю что-то вроде
:~>execute_script Running program... Floating Point Exception NOT OK
Любая помощь ценится!