Код возврата


Код возврата (англ. Exit status) программы, — это целочисленное значение, которое дочерний процесс возвращает родительскому процессу в момент завершения.

При выполнении компьютерных программ операционная система создаёт сущность, называемую процессом, с помощью которой она отслеживает и ведёт учёт выполнения программы. В многозадачных операционных системах, таких как Unix или Linux, новый процесс может быть порождён существующим процессом. Процесс-создатель называется «родительским», а создаваемый процесс — «дочерним». После создания дочерний процесс выполняется параллельно с родительским. Такая техника порождения дочерних процессов используется, чтобы передать часть работы дочернему процессу, в ситуациях, когда родительскому процессу не обязательно тратить на неё время. Когда дочерний процесс завершает своё выполнение, он автоматически либо явно по указанию программиста совершает системный вызов exit, передавая ему целое число. В результате вызова exit целое число передаётся родительскому процессу, который может получить его с помощью системного вызова wait.

Родительский и дочерний процессы могут по-своему интерпретировать различные коды возврата. Например, существует общепринятая практика возвращать ноль в случае успешного выполнения дочернего процесса. Также родительский процесс может узнать причину аварийного завершения — например, прерывание работы из-за получения сигнала.

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

Иногда, если коды возврата были выбраны с учётом такого варианта использования, код может применяться как номер ветви кода для дальнейшего выполнения в родительском процессе.

Код возврата утилиты, вызванной и из командной строки, является результатом совершения системного вызова waitid или его эквивалента. Полный 32-битный код возврата доступен только через вызов waitid, а более старые интерфейсы возвращают число с обрезанным до одного байта значением.