Программирование для Linux. Профессиональный подход
Шрифт:
Для использования функции
По существующему соглашению код завершения указывает на то, успешно ли выполнилась программа. Нулевой код говорит о том, что все в порядке, ненулевой код свидетельствует об ошибке. В последнем случае конкретное значение кода может подсказать природу ошибки. Подобным образом функционируют все компоненты GNU/Linux. Например, на это рассчитывает интерпретатор команд, когда в командных сценариях вызовы программ объединяются с помощью операторов
Помните о следующем ограничении: несмотря на то что тип параметра функции
3.4.1. Ожидание завершения процесса
Читатели, запускавшие программу
Но бывают ситуации, когда родительский процесс должен дождаться завершения одного или нескольких своих потомков. Это можно сделать с помощью функций семейства
3.4.2. Системные вызовы wait
Самая простая функция в семействе называется
Ниже приведена доработанная версия функции
Расскажем о других функциях семейства. Функция
3.4.3. Процессы-зомби
Если дочерний процесс завершается в то время, когда родительский процесс заблокирован функцией
Зомби — это процесс, который завершился, но не был удален. Удаление зомби возлагается на родительский процесс. Функция
Что же всё-таки случится, если родительский процесс не удалит своих потомков? Они останутся в системе в виде зомби. Программа, показанная в листинге 3.6, порождает дочерний процесс, который немедленно завершается, тогда как родительский процесс берет минутную паузу, после чего тоже заканчивает работу, так и не позаботившись об удалении потомка.
- Telegram
- Viber
- Skype
- ВКонтакте