Что означает статус выхода процесса 3? - PullRequest
11 голосов
/ 22 октября 2010

Я видел использование состояния выхода 3 в нескольких скриптах Python , которые перезапускают процессы.Насколько я знаю, соглашение только о 0 и "не 0" в Unix / Linux.

Существует ли соглашение, определяющее другие значения, такие как 3.

Ответы [ 4 ]

4 голосов
/ 22 октября 2010

По крайней мере, в прежние времена возвращаемое значение 1 обычно означало серьезную ошибку, а значение 2 обычно резервировалось для проблем с аргументами командной строки - это означало, что ошибка была допущена пользователем, а не программой.Но помимо этого: нет, нет соглашения;и даже это небольшое соглашение не было универсальным.Как и тире перед аргументами командной строки, которые некоторые версии ps (1) позволяют вам опустить, коды возврата были просто условными.В общем, прочтите документацию (или исходный код!) К сценарию, который вы запускаете, и затем вам нужно написать код проверки кода ошибки с его конкретными значениями.

3 голосов
/ 22 октября 2010

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

Т.е. в этом случае это даст поведение, котороеавтоматический перезапуск выполняется до тех пор, пока причиной его завершения было изменение кода и ничего больше.

0 голосов
/ 22 октября 2010

В данном случае неясно.Предложение foret - это то, что я бы полностью сделал, если бы разработчик все еще был рядом.

В Расширенном руководстве по сценариям Bash перечислены некоторые распространенные коды выхода со специальными значениями.

0 голосов
/ 22 октября 2010

BSD пытался стандартизировать коды выхода, но это не (еще не?) Завоевало популярность:

sysexits3

...