9.1.5.1. Определение статуса завершения процесса

9.1.5.1. Определение статуса завершения процесса

Статус завершения (exit status) (известный также под другими именами значения завершения (exit value), кода возврата (return code) и возвращаемого значения (return value)) представляет собой 8-битовое значение, которое родитель может использовать при завершении порожденного процесса (на языке Unix, «когда порожденный кончается (dies)»). По соглашению статус завершения 0 означает, что программа отработала без проблем. Любое ненулевое значение указывает на какую-нибудь разновидность ошибки; программа определяет используемые числа и их значения, если они есть. (Например, grep использует 0 для указания, что образец был встречен по крайней мере один раз, 1 означает, что образец вообще не встретился, а 2 означает, что возникла ошибка.) Этот статус завершения доступен на уровне оболочки (для оболочек в стиле оболочки Борна) через специальную переменную $?.

Стандарт С определяет две константы, которые следует использовать для полной переносимости на не-POSIX системы:

EXIT_SUCCESS

Программа завершилась без проблем. Для обозначения успеха может также использоваться ноль.

EXIT_FAILURE

В программе была какая-нибудь проблема.

На практике использование лишь этих значений довольно ограничивает. Вместо этого следует выбрать небольшой набор кодов возврата, документировать их значения и использовать. (Например, 1 для ошибок опций командной строки и аргументов, 2 для ошибок ввода/вывода, 3 для ошибок данных и т.д.) Для удобочитаемости стоит использовать константы #define или значения enum. Слишком большой список ошибок делает их использование обременительным; в большинстве случаев вызывающая программа (или пользователь) интересуется лишь нулевым или ненулевым значением.

Когда достаточно двоичного разделения успех/неудача, педантичный программист использует EXIT_SUCCESS и EXIT_FAILURE. Наш собственный стиль более естественный, используя с return и exit() явные константы 0 или 1. Это настолько обычно, что рано заучивается и быстро становится второй натурой. Однако для своих проектов вы сами должны принять решение.

ЗАМЕЧАНИЕ. Для родительского процесса доступны лишь восемь наименее значимых битов значения. Поэтому следует использовать значения в диапазоне 0–255. Как мы вскоре увидим, у чисел 126 и 127 есть традиционные значения (помимо простого «неуспешно»), которых ваши программы должны придерживаться.

Поскольку имеют значение лишь восемь наименее значимых битов, вы никогда не должны использовать отрицательные статусы завершения. Когда из небольших отрицательных чисел выделяются восемь последних битов, они превращаются в большие положительные значения! (Например. -1 становится 255, а -5 становится 251.) Мы видели книги по программированию на С, в которых это понималось неправильно — не дайте сбить себя с толку

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Установка статуса

Из книги Мир общения: ICQ автора Леонтьев Виталий Петрович

Установка статуса Щелкнув по значку ICQ правой кнопкой и выбрав меню My Status, вы можете вручную установить свой статус в сети ICQ при входе в сеть. Базовый, основной статус, который и установлен у вас по умолчанию, подразумевает полную открытость: все видят вас, знают, что вы в


Повышение статуса идентификации

Из книги Все под контролем: Кто и как следит за тобой автора Гарфинкель Симеон

Повышение статуса идентификации И Бертильон, и Хершель понимали, что технологии идентификации в современном обществе могут использоваться с двумя целями. С одной стороны, эти технологии востребованы правоохранительными органами. Имея в своем распоряжении реестр


9.2. Определение производственного процесса организации

Из книги Модель зрелости процессов разработки программного обеспечения автора Паулк Марк

9.2. Определение производственного процесса организации Группа ключевых процессов для уровня 3: определенный уровеньЦель группы ключевых процессов «Определение производственного процесса организации» заключается в разработке и поддержке практичного набора основных


Определение производственного процесса организации

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

Определение производственного процесса организации Цель 1. Разработка и сопровождение стандартного производственного процесса организации.Цель 2. Сбор, изучение и распространение информации, связанной с использованием СППО в проектах разработки


7.4 ОЖИДАНИЕ ЗАВЕРШЕНИЯ ВЫПОЛНЕНИЯ ПРОЦЕССА

Из книги Skype: бесплатные звонки через Интернет. Начали! автора Гольцман Виктор Иосифович

7.4 ОЖИДАНИЕ ЗАВЕРШЕНИЯ ВЫПОЛНЕНИЯ ПРОЦЕССА Процесс может синхронизировать продолжение своего выполнения с моментом завершения потомка, если воспользуется системной функцией wait. Синтаксис вызова функции:pid = wait(stat_addr);где pid — значение кода идентификации (PID)


Изменение статуса в сети

Из книги Системное программирование в среде Windows автора Харт Джонсон М

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


Помещение значка статуса на веб-страницу

Из книги Инфраструктуры открытых ключей автора Полянская Ольга Юрьевна

Помещение значка статуса на веб-страницу В качестве бонуса ко всем замечательным возможностям Skype у вас есть еще одна – отображение на веб-странице пользователя его статуса в Skype с помощью специальной кнопки (значка). Это значит, что любой человек, зашедший на вашу


Ожидание завершения процесса

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

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


Онлайновый протокол статуса сертификата

Из книги Самоучитель Skype. Бесплатная связь через Интернет автора Яковлева Е. С.

Онлайновый протокол статуса сертификата Онлайновый протокол статуса сертификата OCSP - относительно простой протокол (типа "запрос-ответ") для получения информации об аннулировании от доверенного субъекта, называемого OCSP-респондером . OCSP-запрос состоит из номера версии


Проверка статуса сертификата

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

Проверка статуса сертификата Эта проверка завершается успешно, если издатель не аннулировал данный сертификат. Основным средством проверки статуса сертификата являются списки САС, но могут использоваться и другие альтернативные средства


10.1. Определение процесса

Из книги Linux программирование в примерах автора Роббинс Арнольд

10.1. Определение процесса Что такое процесс? В исходной реализации Unix процессом была любая выполняющаяся программа. Для каждой программы ядро системы отслеживает перечисленные ниже аспекты.• Текущая точка выполнения (такая как ожидание возврата системного вызова из


Объявление вашего статуса

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Объявление вашего статуса Программа может сообщить всем вашим друзьям о вашем статусе, т. е. о том, находитесь вы в сети или нет, свободны вы для разговора или нет, на месте вы или нет, либо вы невидимы, или вас не нужно беспокоить. Причем программа сообщает об этом не просто


Изменение статуса

Из книги автора

Изменение статуса Статус легко изменить следующими способами:1. Выберите в меню Файл команду Изменить режим в сети и в раскрывающемся списке укажите режим связи.2. Вызовите раскрывающийся список, щелкнув на треугольничке в левом нижнем углу диалогового окна программы


Получение статуса семафора

Из книги автора

Получение статуса семафора int sem_getvalue(sem_t* sem, int* value);Эта функция используется преимущественно для отладки операций над семафорами. По адресу, указанному в value, устанавливается текущее значение счетчика семафора. Поскольку значение счетчика семафора может измениться в


9.1.6. Использование статуса завершения порожденного процесса

Из книги автора

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


3.4.1. Ожидание завершения процесса

Из книги автора

3.4.1. Ожидание завершения процесса Читатели, запускавшие программу fork-exec (см. листинг 3.4), должно быть, обратили внимание на то, что вывод команды ls часто появляется после того, как основная программа уже завершила свою работу. Это связано с тем, что дочерний процесс, в