在sigaction(2)手册页中:
The siginfo_t argument to a SA_SIGINFO handler
When the SA_SIGINFO flag is specified in act.sa_flags, the signal
handler address is passed via the act.sa_sigaction field. This han‐
dler takes three arguments, as follows:
void
handler(int sig, siginfo_t *info, void *ucontext)
{
...
}当手册页声明它是一个void *时,它为什么是一个ucontext_t *?
ucontext
This is a pointer to a ucontext_t structure, cast to void *.
The structure pointed to by this field contains signal context
information that was saved on the user-space stack by the ker‐
nel; for details, see sigreturn(2). Further information about
the ucontext_t structure can be found in getcontext(3). Com‐
monly, the handler function doesn't make any use of the third
argument.发布于 2018-08-02 00:58:55
POSIX实际上要求这是一个void *,sigaction的第三个参数是:
void(*) (int, siginfo_t *, void *)此外,由于void *可以自由地与任何其他类型的数据指针相互转换,所以没有理由不使用一般情况,因为将来您可能希望无缝地添加不同的类型。
https://stackoverflow.com/questions/51643861
复制相似问题