Операционная система UNIX
Операционная система UNIX читать книгу онлайн
Книга посвящена семейству операционных систем UNIX и содержит информацию о принципах организации, идеологии и архитектуре, объединяющих различные версии этой операционной системы.
В книге рассматриваются: архитектура ядра UNIX (подсистемы ввода/вывода, управления памятью и процессами, а также файловая подсистема), программный интерфейс UNIX (системные вызовы и основные библиотечные функции), пользовательская среда (командный интерпретатор shell, основные команды и утилиты) и сетевая поддержка в UNIX (протоколов семейства TCP/IP, архитектура сетевой подсистемы, программные интерфейсы сокетов и TLI).
Для широкого круга пользователей.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
#include <signal.h>int sigaction (int sig, const struct sigaction *act, struct sigaction *oact);Вся необходимая для управлением сигналами информация передается через указатель на структуру
sigactionvoid (*sa_handler)() | Обработчик сигнала sig |
void (*sa_sigaction)(int, siginfo_t*, void*) | Обработчик сигнала sigSA_SIGINFO |
sigset_t sa_mask | Маска сигналов |
int sa_flags | Флаги |
Поле
sa_handlerSIG_IGNSIG_DFLsa_handlersa_sigactionNULLsa_maskПоле
sa_flagsSA_ONSTACK | Если определена функция-обработчик сигнала, и с помощью функции sigaltstack(2) задан альтернативный стек для функции-обработчика, то при обработке сигнала будет использоваться этот стек. Если флаг не установлен, будет использоваться обычный стек процесса. |
SA_RESETHAND | Если определена функция-обработчик, то диспозиция сигнала будет изменена на SIG_DFL |
SA_NODEFER | Если определена функция-обработчик, то сигнал блокируется на время обработки только в том случае, если он явно указан в поле sa_mask |
SA_RESTART | Если определена функция-обработчик, ряд системных вызовов, выполнение которых было прервано полученным сигналом, будут автоматически перезапущены после обработки сигнала. [25] Если флаг не установлен, системный вызов возвратит ошибку EINTR |
SA_SIGINFO | Если диспозиция указывает на перехват сигнала, вызывается функция, адресованная полем sa_sigactionsa_handler |
SA_NOCLDWAIT | Если указанный аргументом sigSIGCHLD |
SA_NOCLDSTOP | Если указанный аргументом sigSIGCHLD |
*Данные флаги не определены для UNIX BSD.
В системах UNIX BSD 4.x структура
sigactionstruct sigaction { void (*sa_handler)(); sigset_t sa_mask; int sa_flags;};где функция-обработчик определена следующим образом:
void handler(int signo, int code, struct sigcontext *scp);В первом аргументе
signocodescpДля UNIX System V реализована следующая возможность получения более полной информации о сигнале. Если установлен флаг
SA_SIGINFOsigsa_sigactionsiginfo_tucontext_tСтруктура
siginfo_tint si_signo | Номер сигнала |
int si_errno | Номер ошибки |
int si_code | Причина отправления сигнала |
