Прерывание в C ++ - PullRequest
       10

Прерывание в C ++

0 голосов
/ 29 сентября 2010

Я пытаюсь понять прерывания и ищу простой код, который использует прерывания. Может ли кто-нибудь помочь мне с этим?

1 Ответ

2 голосов
/ 29 сентября 2010

Вот два примера использования функции будильника. Тревога вызывает срабатывание SIGALRM через n секунд после вызова этой функции.

Эта программа будет работать в течение 3 секунд, а затем умрет с SIGALRM.

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

int main() {
    alarm(3);
    while(true);
}

В этом случае мы бы хотели поймать SIGALRM и умирать изящно с сообщением:

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

volatile bool alarmed = false;

void alrm_handler(int) {
    alarmed = true;
}

int main() {
    signal(SIGALRM, alrm_handler);

    alarm(3);
    while(not alarmed);

    std::cout << "done" << std::endl;
}
...