LINUX.ORG.RU

alarm()


0

0

Нужна помощь с alarm(). Никак не могу разобраться в man'e там все на английском. Как сделать например чтобы юзер мог вводить что-нибудь, делать что-нибудь, в общем работать с программой, а программа каждую секунду прибавляла к переменной sec единичку ?

anonymous

Устанавливаете в своей программе обработчик сигнала SIGALRM,
в котором делаете sec++, и вызываете alarm(1).

типа:

include <unistd.h>
include <signal.h>
unsigned long sec=0;
int alarm_handler(int signo)
{
sec++;
alarm(1);
}

int main()
{
////
signal(SIGALRM,alarm_handler);
alarm(1);
////
}

NewComer
()

Большое спасибо. Действительно получилось, только пришлось поменять "int alarm_handler" на "void alarm_handler". Теперь мне надо разобраться - как оно работает :) Как я понял - оно работает так (пожалуйста поправьте если не так я еще с этими прерываниями никогда не встречался). Функция signal - устанавливает соответствие прерыванию функции (если полученн такой-то сигнал - делать такую-то функцию, во всяком случае я так понял) - далее идет указание - дать сигнал через 1 секунду (alarm(1)) - функция, которую вызываем, тоже дает такое указание и в результате получается что мы через каждую секунду имеем сигнал который вызывает функцию. Если я не так понял - пожалуйста скажите что ?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.