Функция библиотеки C -alarm()

Стандартная библиотека C - <signal.h>

Описание

alarmЭта функция входит в стандартную библиотеку C и используется для отправки сигнала через заданное время.SIGALRMПодаёт сигнал вызывающему процессу. Эта функция определена в<unistd.h>В заголовочном файле.

Синтаксис

unsigned int alarm(unsigned int seconds);

Параметр

  • unsigned int seconds: указывает, через сколько секунд отправить сигналSIGALRMСигнал. Если параметр равен 0, любой ранее установленный будильник отменяется.

Возвращаемое значение

  • В случае успеха возвращает время, оставшееся до срабатывания ранее установленного будильника (в секундах).
  • Если ранее установленного будильника нет, возвращает 0.

Пример

Ниже приведён пример использованияalarmФункция устанавливает будильник и обрабатываетSIGALRMПример программы для сигнала. Программа посылает через 5 секундSIGALRMсигнал и выполняет соответствующий обработчик сигнала, когда сигнал перехвачен.

Пример

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

// Обработчик сигнала
void handle_sigalrm(int sig) {
    printf("Получен сигнал %d: Сработал будильник\n", sig);
}

int main() {
    // Установить обработчик сигнала для SIGALRM
    signal(SIGALRM, handle_sigalrm);

    // Установить будильник для вызова сигнала SIGALRM через 5 секунд
    alarm(5);
    printf("Будильник установлен на 5 секунд\n");

    // Бесконечный цикл в ожидании сигнала
    while (1) {
        printf("Выполняется...\n");
        sleep(1);
    }

    return 0;
}

При запуске приведённой выше программы-примера возможен следующий вывод:

Alarm set for 5 seconds
Running...
Running...
Running...
Running...
Running...
Caught signal 14: Alarm triggered

Программа устанавливает будильник на 5 секунд, и при перехвате,SIGALRMВыполняется по сигналуhandle_sigalrmобработчик сигнала выводит соответствующее сообщение.

Объяснение

  • signal(SIGALRM, handle_sigalrm);: НастройкиSIGALRMобработчик сигнала —handle_sigalrm。
  • alarm(5);: устанавливает будильник, отправляет через 5 секундSIGALRMсигнал.
  • Программа входит в бесконечный цикл, выводя раз в секунду.Running..., пока не перехватитSIGALRMсигнал, выполняет обработчик сигнала и выводитCaught signal 14: Alarm triggered。

Примечания

  • alarmБудильник, установленный функцией, отправит через указанное времяSIGALRMсигнал вызывающему процессу.
  • можно сделать, вызвав сноваalarmФункция также передаёт параметр 0, чтобы отменить ранее установленный будильник.
  • Обработчики сигналов должны быть как можно короче и эффективнее и выполнять только безопасные операции.

Стандартная библиотека C - <signal.h>

Другие расширения