реакции на этот сигнал после
/* Программа с пользовательской обработкой
сигнала 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;
}
Содержание Назад Вперед