IT

sigactdemo2.c

kio467 2014. 11. 5. 09:58

#include <stdio.h>

#include <signal.h>


main()

{

int i = 5;


struct sigaction newhandler;

sigset_t sigs, prevsigs;

void inthandler();


newhandler.sa_handler = inthandler;

newhandler.sa_flags = SA_RESETHAND | SA_RESTART;


sigemptyset(&sigs);

sigaddset(&sigs, SIGINT);

sigprocmask(SIG_BLOCK, &sigs, &prevsigs);


newhandler.sa_mask = sigs;


if(sigaction(SIGINT, &newhandler, NULL) == -1)

perror("sigaction");


while (i--)

sleep(1);

sigprocmask(SIG_SETMASK, &prevsigs, NULL);

}


void inthandler(int s)

{

printf("\n");

sleep(s);

printf("\n");

}