Книга: Программирование для Linux. Профессиональный подход
Листинг 3.7. (sigchld.c) Удаление дочерних процессов в обработчике сигнала SIGCHLD
Листинг 3.7. (sigchld.c) Удаление дочерних процессов в обработчике сигнала SIGCHLD
#include <signal.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
sig_atomic_t child_exit_status;
void clean_up_child_process(int signal_number) {
/* Удаление дочернего процесса. */
int status;
wait(&status);
/* Сохраняем статус потомка в глобальной переменной. */
child_exit_status = status;
}
int main() {
/* Обрабатываем сигнал SIGCHLD, вызывая функцию
clean_up_child_process(). */
struct sigaction sigchld_action;
memset(&sigchld_action, 0, sizeof(sigchld_action));
sigchld_action.sa_handler = &clean_up_child_process;
sigaction(SIGCHLD, &sigchld_action, NULL);
/* Далее выполняются основные действия, включая порождение
дочернего процесса. */
/* ... */
return 0;
}
Оглавление статьи/книги
Похожие страницы
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Глава 7 Чего нужно опасаться при моделировании бизнес-процессов. Проектные риски моделирования бизнеспроцессов
- Эффективное взаимодействие процессов архитектуры Classic Server
- 1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации
- Листинг 15.11. Код для загрузки файла с Web-сервера
- Удаление шаблонов узлов STP
- Удаление учебного узла
- Удаление файлов занятий
- Удаление узла
- Добавление, изменение и удаление элементов списка
- Добавление, изменение и удаление столбцов списка
- Удаление списка