Здравствуйте,
Существует программка:
Code:
#include <stdlib.h>
#include <signal.h>
int i;
void sighandler(){
printf("Catched signal\n");
printf("Reset i value\n");
i=0;
}
int main(int argc,char *argv){
struct sigaction sact;
sact.sa_handler=sighandler;
sigaction(SIGINT,&sact,NULL);
for(i=0;;i++){
printf("%d\n",i);
sleep(3);
}
return(0);
}
Она печатает возрастающие числа пока не встретит прерывание (насколько я понимаю - CTRL/C. Правильно? [Вопрос 1])
если внутри функции main изменить
sigaction(SIGINT,&sact,NULL);
на
sigaction(SIGQUIT,&sact,NULL);
то, встретив все тот же, CTRL/C - срабатывает выход. Почему?! [Вопрос 2]
Как заставить программу реагировать на CTRL/D? [Вопрос 3]
Уверен вы знаете, подскажете?
Заранее спасибо, psh