Книга: Linux программирование в примерах
10.6.1. Обнажение проблемы
10.6.1. Обнажение проблемы
Что неладно с API System V Release 3? В конце концов, они предоставляют блокирование сигналов, так, что сигналы не теряются, и любой данный сигнал может быть надежно обработан.
Ответ в том, что этот API работает лишь с одним сигналом в одно и то же время. Программы обычно обрабатывают больше одного сигнала. И когда вы находитесь в середине процесса обработки одного сигнала, вы не хотите беспокоиться по поводу обработки еще и второго. (Предположим, вы только что начали отвечать по офисному телефону, когда зазвонил ваш мобильный телефон: вы бы предпочли, чтобы телефонная система ответила вызывающему, что в данный момент вы находитесь на другой линии и что скоро освободитесь, вместо того, чтобы проделывать все это самому.)
С API sigset()
каждый обработчик сигнала должен был бы временно блокировать все другие сигналы, сделать свою работу, а затем разблокировать их. Проблема в том, что в промежутке между любыми двумя вызовами sighold()
может появиться еще не заблокированный сигнал. Сценарий, еще раз, распространенный, создающий условия гонки.
Решением является обеспечение возможности автоматической работы с группами сигналов, т.е. с помощью одного системного вызова. Вы достигаете этого, работая с наборами сигналов и маской сигналов процесса.
- 10.6.1. Обнажение проблемы
- 10.6.2. Наборы сигналов: sigset_t и связанные функции
- 10.6.3. Управление маской сигналов: sigprocmask() и др.
- 10.6.4. Перехват сигналов: sigaction()
- 10.6.5. Извлечение ожидающих сигналов: sigpending()
- 10.6.6. Создание возможности для прерывания функций: siginterrupt()
- 10.6.7. Передача сигналов: kill() и killpg()
- 10.6.8. Наша история до настоящего времени, эпизод II
- Глава 3 «По ко?ням!» Особенности формулировок проблемы, возможности и цели
- Тематический трафик и локальное продвижение: проблемы и решения
- Проблемы классической технологии ASP
- Глава 3 Типичные проблемы с программами
- Проблемы потребителя
- 3.5 Проблемы доступа при использовании нескольких протоколов
- 5.2 Проблемы при резервном копировании
- Введение Вторая грамотность и проблемы ее освоения
- Глава 8 Проблемы с «железом» и разгон процессора
- У меня проблемы со здоровьем. Может ли мне помочь Интернет?
- «Если бы у вас была волшебная палочка, что бы вы сделали для решения проблемы?»
- 7.5.3. Проблемы авторизации