Почему sigaction вызывает дамп ядра - PullRequest
0 голосов
/ 07 июня 2019

int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
Если act не NULL, новое действие для сигнала 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;
}
...