The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Sigaction, !*! psh, 07-Мрт-06, 22:51  [смотреть все]
Здравствуйте,
Существует программка:

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

  • Sigaction, !*! chip, 12:49 , 08-Мрт-06 (1)
    • Sigaction, !*! psh, 17:10 , 08-Мрт-06 (2)
      >>Как заставить программу реагировать на CTRL/D? [Вопрос 3]
      >
      >Чтением в цикле STDIN + select||poll||epoll||kqueue по желанию.

      Большое спасибо!
      Но, не могли бы вы дать примерчик, а то звучит не до конца понятно...




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру