Основы операционных систем. Практикум



         

Example.13-14.4


/* Программа с пользовательской обработкой

сигнала SIGINT, возвращающаяся к первоначальной

реакции на этот сигнал после 5 его обработок*/

#include

#include

int i=0; /* Счетчик числа обработок сигнала */

void (*p)(int); /* Указатель, в который будет

занесен адрес предыдущего обработчика сигнала */

/* Функция my_handler – пользовательский обработчик

сигнала */

void my_handler(int nsig){

printf("Receive signal %d, CTRL-C pressed\n", nsig);

i = i+1;

/* После 5-й обработки возвращаем первоначальную

реакцию на сигнал */

if(i == 5) (void)signal(SIGINT, p);

}

int main(void){

/* Выставляем свою реакцию процесса на сигнал

SIGINT, запоминая адрес предыдущего обработчика */

p = signal(SIGINT, my_handler);

/*Начиная с этого места, процесс будет 5 раз

печатать сообщение о возникновении сигнала SIGINT */

while(1);

return 0;

}




Содержание  Назад  Вперед