Книга: Linux программирование в примерах
10.8.1.1. Труднее, но с большим контролем: alarm() и SIGALARM
10.8.1.1. Труднее, но с большим контролем: alarm()
и SIGALARM
Основным строительным блоком является системный вызов alarm()
:
#include <unistd.h> /* POSIX */
unsigned int alarm(unsigned int seconds);
После того, как alarm()
возвратится, программа продолжает работать. Однако, когда истекают seconds
секунд, ядро посылает процессу SIGALARM
. Действием по умолчанию является завершение процесса, но вы скорее всего вместо этого установите обработчик сигнала для SIGALARM
.
Возвращаемое значение либо 0, либо, если был установлен предыдущий сигнальный интервал, число секунд, остающихся до его завершения. Однако, для процесса имеется лишь один такой сигнальный интервал; предыдущий отменяется, а новый помещается на его место.
Преимуществом здесь является то, что со своим установленным обработчиком вы можете делать при поступлении сигнала все, что хотите. Недостаток же в том, что приходится быть готовым к работе в нескольких контекстах: основном контексте и контексте обработчика сигнала.
- 10.8.1. Сигнальные часы: sleep(), alarm() и SIGALARM
- Глава 33 Четыре маленьких шага к большим продажам на Amazon
- 18.2.1. Склонность к большим документам
- Локальная сеть под контролем
- Глава 4. Локальная сеть под контролем
- Приложение 4. Когда машины были большими
- 3.3.4 One final alarm program
- Сайт с большим количеством сомнительных ссылок
- Объекты с большим спином
- Маленькие шаги способствуют большим переменам
- Две дороги к большим деньгам
- С программами труднее