你可以通过论证来解决问题吗?

时间:2009-12-03 22:05:27

标签: linux

我注意到在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回调函数? 你有一个简单的例子吗?

1 个答案:

答案 0 :(得分:13)

不幸的是没有。虽然签名是无效*,但它实际上是一个ucontext_t。来自Single UNIX Specification:

  

第三个参数可以转换为指向ucontext_t类型的对象的指针,以指代在传递信号时被中断的接收进程的上下文