Добавил:
Fragga
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лабораторки по ОС препод Челноков / 2семестр / wi2 / AKAM / 3 / 3akm
.c#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
static int nsig = 0;
void (*nsignal(int signo, void (*hndlr) (int))) (int)
//----------------//
//nadezhniy signal//
//----------------//
{
struct sigaction act, oact;
act.sa_handler = hndlr;
sigemptyset(&act.sa_mask);
if (signo != SIGALRM)
act.sa_flags |= SA_RESTART;
if (sigaction(signo, &act, &oact) < 0) return (SIG_ERR);
return(oact.sa_handler);
}
static void sig_hndlr(int SigNo)
//-------------------//
//obrabotchic signala//
//-------------------//
{
nsignal(SIGINT, sig_hndlr);
printf("SIGINT recieved (%d/3)\n",++nsig);
//ustanovka dispozicii
nsignal(SIGINT, sig_hndlr);
nsignal(SIGUSR1, SIG_DFL);
nsignal(SIGUSR2, SIG_IGN);
if (nsig >= 3)
exit(0);
}
main()
//----//
//Main//
//----//
{
printf("lAb ь3 (aka Nadezhnie Signaly)\n bY Gorden AKAMa aka AKM aka
Eugene Makarov (VI-2-01)
Press 3x'Ctrl+C':\n");
nsignal(SIGINT, sig_hndlr);
while (1)
sleep(100);
}