Всегда ли код завершения с нулевым значением означает успешное выполнение в Perl? - PullRequest
5 голосов
/ 23 марта 2012

У меня есть Perl-скрипт, который будет выполнять три приложения. Все они имеют различный статус кода выхода.

Статус первого кода выхода приложения - 1. Приложение нормально завершилось без проблем. (Успешно)

Статус кода завершения второго приложения - 99. Тем не менее, приложение завершилось нормально без каких-либо проблем. (Успешно)

Наконец, третье состояние кода выхода приложения равно 0. То же самое с первым и вторым, приложение завершилось нормально без каких-либо проблем. (Успешно)

Примечание: уже сдвиньте код выхода на 8 бит вправо.

Вопрос в том, всегда ли код завершения возвращается к 0 при успешном запуске?

Пожалуйста, без резких комментариев, я просто запутался. Пожалуйста, совет.

Ответы [ 2 ]

8 голосов
/ 23 марта 2012

Статус возврата выбирается дочерним процессом.Обычно оно равно нулю для успешной работы, но нет ничего для обеспечения соблюдения этого соглашения.

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

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

4 голосов
/ 23 марта 2012

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

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

Одной из сред, которая имеет сильную реакцию по умолчанию на ненулевой статус возврата, является семейство операционных систем VMS / OpenVMS. Если ваши приложения могут работать там, пожалуйста, следуйте стандарту.

...