Книга: UNIX: разработка сетевых приложений
Семантика сигналов POSIX
Семантика сигналов POSIX
Сведем воедино следующие моменты, относящиеся к обработке сигналов в системе, совместимой с POSIX.
? Однажды установленный обработчик сигналов остается установленным (в более ранних системах обработчик сигналов удалялся каждый раз по выполнении).
? На время выполнения функции — обработчика сигнала доставляемый сигнал блокируется. Более того, любые дополнительные сигналы, заданные в наборе сигналов sa_mask
, переданном функции sigaction
при установке обработчика, также блокируются. В листинге 5.5 мы устанавливаем sa_mask
равным пустому набору, что означает, что никакие сигналы, кроме перехватываемого, не блокируются.
? Если сигнал генерируется один или несколько раз, пока он блокирован, то обычно после разблокирования он доставляется только один раз, то есть по умолчанию сигналы Unix не устанавливаются в очередь. Пример мы рассмотрим в следующем разделе. Стандарт POSIX реального времени 1003.1b определяет набор надежных сигналов, которые помещаются в очередь, но в этой книге мы их не используем.
? Существует возможность выборочного блокирования и разблокирования набора сигналов с помощью функции sigprocmask
. Это позволяет нам защитить критическую область кода, не допуская перехватывания определенных сигналов во время ее выполнения.
- 5.8. Обработка сигналов POSIX
- 1.2. Базовый синтаксис и семантика Ruby
- 7.4. Аналоговые перемножители сигналов
- 15.1.3. Обработка сигналов управления заданиями
- 9.1.6.1. Использование функций POSIX: wait() и waitpid()
- Posix
- 14.2.2. Блокировка POSIX: fcntl() и lockf()
- Инварианты класса и семантика ссылок
- Пример: обработчик управляющих сигналов консоли
- 10.6.4. Перехват сигналов: sigaction()
- 19.7.9. Обработка сигналов и протоколирование
- 12.6.2. Функции POSIX: random() и srandom()