signal函数和sigaction结构体理解
一,signal函数
详细介绍: http://blog.csdn.net/ta893115871/article/details/7475095
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
/*
SIG_IGN忽略/SIG_DFL默认,这俩宏也可以作为信号处理函数。同时SIGSTOP/SIGKILL这俩信号无法捕获和忽略。注意,经过实验发现,signal函数也会堵塞当前正在处理的signal,但是没有办法阻塞其它signal,比如正在处理SIG_INT,再来一个SIG_INT则会堵塞,但是来SIG_QUIT则会被其中断,如果SIG_QUIT有处理,则需要等待SIG_QUIT处理完了,SIG_INT才会接着刚才处理。
*/
void ouch(int sig)
{
printf("caught SIGINT,I got signal %d\n", sig);
// (void) signal(SIGINT, SIG_DFL);
//(void) signal(SIGINT, ouch);
int num = 5;
int i = 0;
while( i++ < num )
{
printf("SIGINT processing...\n");
sleep(1);
}
return;
}
void quitsig( int sig )
{
printf("caught SIGQUIT, I got signal %d\n", sig);
// (void) signal(SIGINT, SIG_DFL);
//(void) signal(SIGINT, ouch);
int num = 5;
int i = 0;
while( i++ < num )
{
printf("SIGQUIT processing...\n");
</
一,signal函数
详细介绍: http://blog.csdn.net/ta893115871/article/details/7475095
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
/*
SIG_IGN忽略/SIG_DFL默认,这俩宏也可以作为信号处理函数。同时SIGSTOP/SIGKILL这俩信号无法捕获和忽略。注意,经过实验发现,signal函数也会堵塞当前正在处理的signal,但是没有办法阻塞其它signal,比如正在处理SIG_INT,再来一个SIG_INT则会堵塞,但是来SIG_QUIT则会被其中断,如果SIG_QUIT有处理,则需要等待SIG_QUIT处理完了,SIG_INT才会接着刚才处理。
*/
void ouch(int sig)
{
printf("caught SIGINT,I got signal %d\n", sig);
// (void) signal(SIGINT, SIG_DFL);
//(void) signal(SIGINT, ouch);
int num = 5;
int i = 0;
while( i++ < num )
{
printf("SIGINT processing...\n");
sleep(1);
}
return;
}
void quitsig( int sig )
{
printf("caught SIGQUIT, I got signal %d\n", sig);
// (void) signal(SIGINT, SIG_DFL);
//(void) signal(SIGINT, ouch);
int num = 5;
int i = 0;
while( i++ < num )
{
printf("SIGQUIT processing...\n");
</