我注意到在sigaction的定义中,sa_sigaction回调,最后一个参数是void *。
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void * );
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
}
这有点表明您可以将用户参数传递给sa_sigaction处理程序。
但是,我一直无法找到这样的例子。
有没有人知道你是否可以将参数传递给sigaction回调函数? 你有一个简单的例子吗?
答案 0 :(得分:13)
不幸的是没有。虽然签名是无效*,但它实际上是一个ucontext_t。来自Single UNIX Specification:
第三个参数可以转换为指向ucontext_t类型的对象的指针,以指代在传递信号时被中断的接收进程的上下文