4
當信號傳遞時,信號處理程序在進程的堆棧上執行。 如果在sigaction()
中使用SA_ONSTACK,則使用不同的堆棧。在sigaction中使用SA_ONSTACK有什麼用?
使用不同堆棧的用途是什麼?任何使用案例的例子?
當信號傳遞時,信號處理程序在進程的堆棧上執行。 如果在sigaction()
中使用SA_ONSTACK,則使用不同的堆棧。在sigaction中使用SA_ONSTACK有什麼用?
使用不同堆棧的用途是什麼?任何使用案例的例子?
備用堆棧的一種用法是嘗試正確處理SIGSEGV
。
如果你的進程剛剛收到SIGSEGV
,因爲它超過它的堆棧限制,你不能運行進程的堆棧中的信號處理程序 - 它已經裝滿了。備用堆棧允許您(仔細)在這種情況下運行一些或多或少的優雅關機。
+1這正是TLPI提到的sigaltstack的例子。 – cnicutar 2012-03-03 16:12:35