2013-11-12 1 views
2

Мне нужно определить коды выхода моей программы, написанные на Fortran 90, но я смущаюсь по пути.Коды выхода из Fortran в Linux

Я читаю и создаю файлы NetCDF, поэтому некоторые коды ошибок предоставляются библиотеками NetCDF. Чтобы передать код выхода в переменные среды Linux, я использую код exit(status) везде, где программа завершена.

Но что-то идет не так, или, по крайней мере, я этого не понимаю. Если я получу код ошибки из NetCDF, например -49 (переменная не найдена), программа заканчивается, и полученное значение при использовании echo $? равно 207. Зачем?

Если я установил некоторые конкретные выходы, используя status=-1, то значение $? равно 255.

Я прочитал эти коды выхода linux, зависит от оболочки, некоторые из них зарезервированы, есть некоторые вызванные системные ошибки.

+0

Я видел, что 255 означает «Выход из состояния вне диапазона» (выход принимает только целые аргументы в диапазоне от 0 до 255). Но тогда, откуда это получается? – cardogar

ответ

1

Код выхода Unix беззнаковый. Если вы вернете отрицательный результат, он будет неявно преобразован.

256-49 = 207, но это, вероятно, зависит от платформы.

+0

Это имеет смысл. Спасибо за ваш ответ. – cardogar