Я считаю, что поведение соответствует ожиданиям. Здесь интересны следующие абзацы:
GFORTRAN_STDOUT_UNIT
: номер блока для стандартного выхода
Эту переменную среды можно использовать для выбора номера устройства , предварительно подключенного к стандартному выходу . Это должно быть положительное целое число. Значение по умолчанию - 6.
источник: Документация GCC Gfortran
Так что это просто означает, что /dev/stdout
будет подключен к номеру устройства GFORTRAN_STDOUT_UNIT
.
Стандарт Фортрана делает следующие заявления:
9,5 Файл подключения
9.5.1 Ссылка на файл
4 В операторе WRITE io-модуль, который является звездочкой, идентифицирует внешний модуль, который предварительно подключен для последовательного форматированного вывода. Это устройство также
определяется значением именованной постоянной OUTPUT_UNIT
встроенного модуля ISO_FORTRAN_ENV
.
Примечание 9.15: Даже если OUTPUT_UNIT
подключено к отдельному файлу на каждом изображении, ожидается, что процессор сможет объединить последовательности записей из этих файлов в одна последовательность записей, которая отправляется на
физическое устройство, связанное с этим устройством, , например терминал пользователя .
источник: Стандарт Fortran 2008
Все, что мы знаем, это то, что (ergo OUTPUT_UNIT
) предварительно подключены к устройству для последовательного форматированного вывода. Стандарт не устанавливает, что это за внешний блок. Нет ссылки на /dev/stdout
. Стандарт фактически прямо упоминает в примечании, что пользовательский терминал - это возможный предварительно подключенный модуль, он также мог быть вашим принтером.
В итоге, установив GFORTRAN_STDOUT_UNIT=777
, вы просто предварительно подключите модуль 777 к /dev/stdout
, и будет предварительно подключен к внешнему модулю для последовательного выхода (т. Е. В данном случае fort.6)