int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
如果act 为非NULL,则从act 安装信号signum 的新动作。如果 oldact 不为 NULL,则前一个操作保存在 oldact 中。
这来自https://linux.die.net/man/2/sigaction,我不太明白“先前的操作”是什么意思。这是否意味着默认情况下引用的操作signum
?我已经测试了如下代码,但它给了我一个核心转储:
#include <signal.h>
#include <unistd.h>
struct sigaction act, oact;
void func(int p)
{
oact.sa_handler(p); # core dumped here
}
int main(int argc, char **argv)
{
act.sa_handler = func;
sigaction(SIGINT, &act, &oact);
sleep(100);
return 0;
}