Linux программирование в примерах
Шрифт:
В большинстве случаев при исполнении
9.1.5. Завершение процесса
Завершение процесса включает два шага: окончание процесса с передачей системе статуса завершения и восстановление информации родительским процессом.
9.1.5.1. Определение статуса завершения процесса
Статус завершения (exit status) (известный также под другими именами значения завершения (exit value), кода возврата (return code) и возвращаемого значения (return value)) представляет собой 8-битовое значение, которое родитель может использовать при завершении порожденного процесса (на языке Unix, «когда порожденный кончается (dies)»). По соглашению статус завершения 0 означает, что программа отработала без проблем. Любое ненулевое значение указывает на какую-нибудь разновидность ошибки; программа определяет используемые числа и их значения, если они есть. (Например,
Стандарт С определяет две константы, которые следует использовать для полной переносимости на не-POSIX системы:
Программа завершилась без проблем. Для обозначения успеха может также использоваться ноль.
В программе была какая-нибудь проблема.
На практике использование лишь этих значений довольно ограничивает. Вместо этого следует выбрать небольшой набор кодов возврата, документировать их значения и использовать. (Например, 1 для ошибок опций командной строки и аргументов, 2 для ошибок ввода/вывода, 3 для ошибок данных и т.д.) Для удобочитаемости стоит использовать константы
Когда достаточно двоичного разделения успех/неудача, педантичный программист использует
ЗАМЕЧАНИЕ. Для родительского процесса доступны лишь восемь наименее значимых битов значения. Поэтому следует использовать значения в диапазоне 0–255. Как мы вскоре увидим, у чисел 126 и 127 есть традиционные значения (помимо простого «неуспешно»), которых ваши программы должны придерживаться.
Поскольку имеют значение лишь восемь наименее значимых битов, вы никогда не должны использовать отрицательные статусы завершения. Когда из небольших отрицательных чисел выделяются восемь последних битов, они превращаются в большие положительные значения! (Например.
– 1 становится 255, а -5 становится 251.) Мы видели книги по программированию на С, в которых это понималось неправильно — не дайте сбить себя с толку
9.1.5.2. Возвращение из
Программа может естественно завершиться одним из двух способов: посредством использования одной из описанных далее функций или возвратившись из
Стандарт С 1999 г. указывает, что при выпадении в конце, поведение функции
Возвращенное из
ЗАМЕЧАНИЕ. На системах GNU/Linux управляемая компилятором команда c99 запускает компилятор с соответствующими опциями, так что возвращаемое значение при выпадении из конца функции равно 0. Простой gcc этого не делает.
9.1.5.3. Функции завершения
Другим способом естественного завершения программы является вызов функций завершения. Стандарт С определяет следующие функции:
Эти функции работают следующим образом:
Эта функция завершает программу,
Эта функция в сущности идентична функции POSIX
Следующая программа не делает полезной работы, но демонстрирует, как работает
На границе империй. Том 9. Часть 3
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
рейтинг книги
Лекарь Империи 9
9. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
рейтинг книги
Воплощение Похоти
1. Воплощение Похоти
Фантастика:
юмористическое фэнтези
попаданцы
рпг
аниме
рейтинг книги
Моров. Том 3
2. Моров
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Гусариум (сборник)
Фантастика:
альтернативная история
рейтинг книги
Эволюционер из трущоб. Том 6
6. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Товарищ "Чума" 7
7. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
рейтинг книги
Черный Маг Императора 18
18. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
рейтинг книги
Двойник Короля 5
5. Двойник Короля
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Чужак из ниоткуда
1. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Страж
1. Страж
Фантастика:
научная фантастика
рейтинг книги