【发布时间】:2019-03-06 23:56:23
【问题描述】:
对于 Linux C 编程,我有这个处理程序和 main 方法:
void handler(int number, signinfo_t, void *ignore){
printf("Signaling %d\n", si->si_pid);
}
int main(){
struct sigaction sig;
sig.sa_flags = SA_SIGINFO;
sigemptyset(&sig.sa_mask);
sig.sa_handler = handler // This line has error
如果我只使用 1 个参数 void handler(int num) 制作处理程序
它工作正常;但是,我将无法使用si->si_pid。我得到的警告是:
warning: assignment to __sighandler_t from an incompatible pointer type
-Wincompatible-pointer-types
sig.sa_handler = handler;
我是否改为sig.sa_action?我想修复警告
【问题讨论】:
-
注意:您不能在信号处理程序中使用
printf()(和朋友)。 -
您在
handler函数定义中缺少变量名。你的意思是写siginfo_t *si?
标签: c linux signals handler sigaction