传统的signal可能会有信号未决或者信号重入或多或少的问题,毕竟这个函数已经很多年了.
所以推荐使用sigaction函数,但是sigaction函数相对signal较为复杂,而且每次要写一大堆.因此对于习惯使用signal这种简单方便的函数我们不妨自己包一下sigaction!
int MySigaction(int signo, void (*func)(int)) { struct sigaction act, oact; act.sa_handler = func; sigemptyset(&act.sa_mask); act.sa_flags = 0; return sigaction(signo, &act, &oact); }
sa_handler和signal的handler一样
sigemptyset表示清空结构,和memset差不多
oact表示老的那个结构,不用管,填NULL也行 下次就可以愉快的来copy代码了.哈哈
时间: 2024-11-09 07:18:22