Проверьте на стандартный вывод или стандартный вывод - PullRequest
2 голосов
/ 24 февраля 2010

Один из двоичных файлов, которые я использую в своем сценарии оболочки, вызывает ошибку сегментации (ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: 139)

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

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

Ответы [ 3 ]

2 голосов
/ 24 февраля 2010

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

# 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
2 голосов
/ 24 февраля 2010

Ну, я отвечаю на свой вопрос .. :) Я нашел ответ здесь Как я могу подавить вывод из-за SIGSEGV или SIGFPE в программе Fortran 90?

Хитрость в том, чтобы добавить

`exec 2> filename`  

в скрипте оболочки.

Это перенаправит все сообщения из оболочки в файл журнала

0 голосов
/ 24 февраля 2010

попробуй

./program &> logfile

есть различные примеры перенаправления ввода / вывода здесь , посмотрите

Вы также можете посмотреть на это обсуждение *

...