为什么sigaction会调用核心转储

时间:2019-06-07 09:53:01

标签: c linux signals posix sigaction

  

int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
  如果act为非NULL,则从以下位置安装信号信号的新操作:   法案。如果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;
}

0 个答案:

没有答案