用sigaction处理信号

我需要用sigaction处理一些信号,但是当我编译我的代码时,我得到这个错误:

warning: assignment from incompatible pointer type

代码是:

struct sigaction hup_act;
...
hup_act.sa_flags=SA_SIGINFO;
hup_act.sa_sigaction = sighupHandler;
sigaction(SIGHUP, &hup_act, NULL);

警告在hup_act.sa_sigaction分配上.当我将sighup发送到我的应用程序时,此警告会导致分段错误.

最佳答案
如果在struct sigaction的成员sa_flags中设置了SA_SIGINFO,则使用类型的方法

void signalhandler(int, siginfo_t *, void *);

作为要分配给struct sigaction的成员sa_sigaction的处理函数

否则使用类型的方法

void signalhandler(int);

作为要分配给struct sigaction的成员sa_handler的处理函数.

转载注明原文:用sigaction处理信号 - 代码日志