2010-02-24 2 views
2

Один из бинарных файлов, которые я использую в моем сценарии оболочки вызывает ошибку сегментации (возвращаемое значение: 139)Проверка на стандартный вывод или STDERR

И хотя, я перенаправлять как стандартный вывод и стандартный поток ошибок в лог-файл, сообщения об ошибках сегментации отображаются в терминале, когда я запускаю сценарий оболочки.

Можно ли перенаправить это сообщение от Segfault в файл журнала?

ответ

0

попробовать

./program &> logfile 

существуют различные exampls на перенаправлении I/O here, посмотрите

Вы посмотрите на эту discussion, а

+0

Ну, это ddid не работает, вот мой код, который вызывает проблему: «$ ДЕШИФРАТОР» -если $ input_file -of $ output_file >> $ log_file 2> & 1 вот результат, когда вызвано Segfault: ./decode.sh: строка 292: 15475 Ошибка сегментации «$ DECODER» $ IF input .. – Kiran

+0

http://stackoverflow.com/questions/988279/bash-redirecting-of-stdoutput-and-stderror-do-not-catch-all-output Я рассматриваю аналогичный подход ... но внутри сценарий оболочки – Kiran

+0

вы можете увидеть http://unix.derkeiler.com/Newsgroups/comp.unix.programmer/2004-12/0135.html для обсуждения – ghostdog74

2

может сообщение Сегментация Fault вы видите печатается оболочкой, которая запускает вашу программу. Такое поведение варьируется от оболочки к оболочке, поэтому вы можете попробовать несколько вещей (если вы настаиваете на получении сообщения о сбое сегментации в своих журналах из переадресации оболочки).

# Have sh invoke your program, and redirect output from both sh and your program into logfile 
sh -c "program arguments more arguments" >logfile 2>&1 
# Force bash to not just exec your program (/bin/true part), and redirect output 
# from both bash and your program into logfile 
bash -c "/bin/true; program arguments more arguments" >logfile 2>&1 
+0

Простой и элегантный. +1 –

Смежные вопросы