重庆时时彩三星走势图:sigaction函数
来源:百度文库 编辑:中财网 时间:2024/05/12 04:45:13
sigaction
sigaction()是POSIX的信号接口,而signal()是标准C的信号接口(如果程序必须在非POSIX系统上运行,那么就应该使用这个接口)
给信号signum设置新的信号处理函数act, 同时保留该信号原有的信号处理函数oldact
------------------------------------------------
int sigaction( int signum,
const struct sigaction --*act,
struct sigaction *oldact)
#include #include #include
void show_handler(int sig)
{
printf("I got signal %d\n", sig);
int i;
for(i = 0; i < 5; i++) {
printf("i = %d\n", i);
sleep(1);
}
}
int main(void)
{
int i = 0;
struct sigaction act, oldact;
act.sa_handler = show_handler;
sigaddset(&act.sa_mask, SIGQUIT); //(1)
act.sa_flags = SA_RESETHAND | SA_NODEFER; //(2)
//act.sa_flags = 0; //(3)
sigaction(SIGINT, &act, &oldact);
while(1) {
sleep(1);
printf("sleeping %d\n", i);
i++;
}
}
void show_handler(int sig)
{
printf("I got signal %d\n", sig);
int i;
for(i = 0; i < 5; i++) {
printf("i = %d\n", i);
sleep(1);
}
}
int main(void)
{
int i = 0;
struct sigaction act, oldact;
act.sa_handler = show_handler;
sigaddset(&act.sa_mask, SIGQUIT); //(1)
act.sa_flags = SA_RESETHAND | SA_NODEFER; //(2)
//act.sa_flags = 0; //(3)
sigaction(SIGINT, &act, &oldact);
while(1) {
sleep(1);
printf("sleeping %d\n", i);
i++;
}
}