信号(二) (2)

注:
①si_code:表示信号来源,对于通过sigqueue()发送的实时信号来说,该字段为SI_QUEUE
②si_value:由进程使用sigqueue()发送信号时在value参数中指定

③signal()与sigaction() sigaction()是建立信号处理器的首选API,较之signal()可移植性更佳。而往往使用signal()将信号处置设置为SIG_IGN或SIG_DFL。 例:用sigaction模拟signal函数 void handler(int sig) { printf("recv a sig=%d\n", sig); } __sighandler_t my_signal(int sig, __sighandler_t handler) { struct sigaction act; struct sigaction oldact; act.sa_handler = handler; sigemptyset(&act.sa_mask); act.sa_flags = 0; if (sigaction(sig, &act, &oldact) < 0) return SIG_ERR; return oldact.sa_handler; } int main(int argc, char *argv[]) { struct sigaction act; sigset_t sa_mask; act.sa_handler = handler; act.sa_flags = 0; sigemptyset(&act.sa_mask); //测试信号安装函数 //sigaction(SIGINT, &act, NULL); //模拟signal函数 my_signal(SIGINT, handler); for (;;) { pause(); } return 0; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydwjg.html