????sigaction ?????????????£?
????int sigaction(int signum?? const struct sigaction *act??struct sigaction *oldact)
???????????????????????????????????????ж???
?????????????????????????#include <signal.h>
??????????????????£?
????signum : ??????????????????????SIGKILL??SIGSTOP?????κ???Ч??????
????act : ????????signum???????????ж???
????oldact: ????????signum?????????????ж???
????sigaction ???嶨?????£?
????struct sigaction {
????void (*sa_handler)(int);
????void (*sa_sigaction)(int?? siginfo_t* ?? vid*);
????sigset_t sa_mask;
????int sa_flags;
????void (*sa_restorer)(void);
????};
????sa_restorer???????????????????????????á?POSIX???????sa_restorer????
????sa_handler??????????????signum???????ж????????SIG_DFL???????ж????????SIG_IGN????????????????????????????????????????????????signum????????????
????sa_flags: ?????????????????????????????????????????????????λ???γ??
????SA_NOCLDSTOP
????SA_NOCLDWAIT
????SA_NODEFER
????SA_ONSTACK
????SA_RESETHAND
????SA_RESTART
????SA_SIGINFO
???????sa_flags??????SA_SIGINFO?????sa_sigacton????sa_handler???signum???????????
???????????????signum????????????????????siginfo_t????????????????????ucontext_t????????????????????
????sa_mask: ?????????????????????????й??????????????????mask??????????????handler??????????????
??????????????SA_NODEFER?????
????sa_sigaction?????е?siginfo_t ???????????????????壺
????siginfo_t {
????int si_signo; /*?????*/
????int si_errno; /*?????*/
????int si_code; /*?????*/
????int si_trapno;/*???????????????trap??*/
????pid_t si_pid; /*???????ID*/
????uid_t si_uid; /*???????????????ID*/
????int si_status; /*????*/
????clock_t si_utime; /*???????????*/
????clock_t si_stime; /*??????????*/
????sigval_t si_value; /*????*/
????int si_int ; /*POSIX.1b ???*/
????void *si_ptr; /*POSIX.1b ???*/
????int si_overrun
????int si_timerid
????void *si_addr
????long si_band
????int si_fd;
????short si_addr_lsb;
????}
????si_signo?? si_errno??si_code??????????塣
????si_erron??Linux????????á?
???????kill??sigqueue???????????si_pid??si_uid?????????sigqueue????????????????????????????si_int??si_ptr??
???????POSIX.1b???????????????si_overrun??si_timerid??
???????si_timerid???????????????????????????????timer_create
????????????ID??????????si_overrun????????????????????????timer_getoverrun??????????????????Щ????????Linux?????
??????????????????????????si_int/si_ptr?????sigev_value????mq_notify??3??;
????si_pid??????????????????ID;
???????????????????????ID??