信号传递时,信号处理程序在进程的堆栈上执行。 如果在sigaction()使用SA_ONSTACK,则使用不同的堆栈。
sigaction()
什么是使用不同的堆栈? 任何使用案例的例子?
备用堆栈的一个用途是尝试正确处理SIGSEGV 。
SIGSEGV
如果你的进程因为超过了堆栈限制而收到一个SIGSEGV ,那么你不能在进程的堆栈上运行信号处理程序 – 已经满了。 有一个备用堆栈可以(仔细)在这种情况下运行一些或多或少的正常关机。