Установить "будильник" для процесса
#include <unistd.h>unsigned int alarm( unsigned int seconds );
libc
Функция alarm() выполняет доставку в вызывающий её процесс сигнала SIGALRM через указанное количество секунд реального времени. Чтобы установить обработчик данного сигнала, используйте функцию signal() или SignalAction().
|
Запросы при вызове alarm() не накапливаются, возможно запланировать генерацию только одного сигнала SIGALRM таким методом. Если SIGALRM ещё не был сгенерирован, вызов alarm() перепланирует время генерации сигнала SIGALRM.
Функция возвращает количество секунд, оставшихся до момента доставки сигнала SIGALRM, установленного предыдущим вызовом alarm(), или ноль, если предыдущие запросы отсутствуют.
Если возникла ошибка, функция возвращает (unsigned)-1, код ошибки записывается в errno.
#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(){unsigned int timeleft;printf( "Set the alarm and sleep\n" );alarm( 10 );sleep( 5 ); /* go to sleep for 5 seconds *//** To get the time left before the SIGALRM is* to arrive, one must cancel the initial timer,* which returns the amount of time it had* remaining.*/timeleft = alarm( 0 );printf( "Time left before cancel and rearm: %d\n", timeleft );/** Start a new timer that kicks us when timeleft* seconds have passed.*/alarm( timeleft );/** Wait until we receive the SIGALRM signal; any* signal kills us, though, since we don't have* a signal handler.*/printf( "Hanging around, waiting to die\n" );pause();return (EXIT_SUCCESS);}
POSIX 1003.1
Запросы от функций alarm(), TimerAlarm() и ualarm() не накапливаются; этими функциями можно запланировать доставку только одного сигнала SIGALRM. Если SIGALRM ещё не был сгенерирован, следующий вызов alarm(), TimerAlarm() или ualarm() перепланирует его время генерации.
errno, pause(), signal(), SignalAction(), sleep(), TimerAlarm(), timer_create(), timer_delete(), timer_gettime(), timer_settime(), ualarm()
Предыдущий раздел: Описание API системной библиотеки