Ошибка перенаправления Bash Stderr и Stdout - PullRequest
3 голосов
/ 07 сентября 2010

У меня есть вывод программы на FORTRAN, который я хочу перенаправить в файл. Я делал это раньше и использую

$myprog.out>>out.txt 2>&1

и по какой-то причине это не работает. Я тестирую его с помощью другой простой тестовой программы

$myprog.test>>out.txt 2>&1

и все работает

Я запускаю myprog.out и вывод идет на экран как обычно, но перенаправление кажется неудачным! Это работало и теперь, кажется, перестало работать. Это очень странно Я закомментировал несколько утверждений печати, которые мне больше не нужны, перекомпилировал и затем переадресация группы не работает.

Очевидно, что с моим выводом происходит нечто иное, но как диагностировать, куда оно идет?

Ответы [ 2 ]

4 голосов
/ 08 сентября 2010

Возможно, вам нужно сбросить вывод. Смотрите, например, эту тему SO . Как это сделать зависит от вашего компилятора, я думаю. Потому что только в Fortran 2003 Standard есть оператор flush () и возможность определять числа, соответствующие единицам stdout / stderr.

Однако в gfortran (например) вы можете использовать flush () встроенную процедуру с эквивалентами дескрипторов файлов Unix: UNIT = 5 для stdin, UNIT = 6 для stdout и UNIT = 0 для stderr.

PROGRAM main

  PRINT *, "Hello!"
  CALL flush(6)
  CALL flush(0)

END PROGRAM main
0 голосов
/ 07 сентября 2010

С >> вы добавляете вывод вашей программы в out.txt при каждом ее запуске.

Можете ли вы просто попробовать прокрутить до конца out.txt и посмотреть, есть ли у вас вывод?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...