在通过
void (*sa_sigaction)(int, siginfo_t *, void *);
安装的信号处理程序中,我如何判断SIGILL是由非法指令还是某个进程发送SIGILL引起的?我查看了siginfo_t的si_pid
,但在遇到非法指令时,它似乎未初始化,因此我无法根据它来做出决定。当然,我正在寻找一个简单且可移植的解决方案,而不是读取si_addr
处的指令代码并尝试确定其是否合法。