一、当系统接收到信号时,有三种处理方法:
1.系统默认
2.忽略
3.捕捉信号
二、 sighandler_t signal(int signum, sighandler_t handler);
: 通过handler标志去处理接受到的signum信号
1、 signum信号编号:
1).系统默认 SIG_DFL
2).忽略 SIG_IGN
3).捕捉信号 信号处理函数
3、handler类型:typedef void (*sighandler_t)(int);
二、函数sigaction功能基本和signal一致,功能必signal强大,更加灵活
int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
1.系统默认
2.忽略
3.捕捉信号
二、 sighandler_t signal(int signum, sighandler_t handler);
: 通过handler标志去处理接受到的signum信号
1、 signum信号编号:
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
9) SIGKILL
19) SIGSTOP
注意:以上两个信号既不能被忽略也不能被捕捉
2、handler : 处理方式(函数指针)1).系统默认 SIG_DFL
2).忽略 SIG_IGN
3).捕捉信号 信号处理函数
3、handler类型:typedef void (*sighandler_t)(int);
sighandler_t 函数指针类型; 类型:void (*)(int);
eg:构造信号处理函数:void sig_int(int sig)
{
}
二、函数sigaction功能基本和signal一致,功能必signal强大,更加灵活
int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
signum :信号的编号
struct sigaction {
void (*sa_handler)(int); //用于接受信号的处理方式(信号处理函数地址)
void (*sa_sigaction)(int,siginfo_t*,void*); //用于接受信号的处理方式(信号处理函数地址),
//可以访问到siginfo_t 结构体,但是sa_flags
//需要跟上SA_SIGINFO标识
sigset_t sa_mask; //信号集
int sa_flags; //标志 eg:SA_SIGINFO
void (*sa_restorer)(void);
};