2011-09-06 55 views
1

我想了解sigsetjmp()siglongjmp()函數。手冊頁指出sigsetjmp()保存上下文,siglongjmp()恢復上下文。我的問題是,他們會照顧堆棧指針和程序計數器值嗎?關於sigsetjmp和siglongjmp的問題

歡迎任何額外資源的鏈接。

+0

這不像是問一個函數調用是否會在完成時返回? – ikegami

回答

1

是的,它照顧所有的情況。那實際上是依賴於實現的。

一定要閱讀spec和你的實現的手冊頁,並小心這些功能,他們是棘手的。

+0

你能告訴我什麼是實施依賴嗎?在所有平臺上,SP和PC都將被存儲,對吧?另外,你能給我一個平臺之間差異的例子嗎? – CuriousCoder

+0

不是所有的CPU都必須有一個堆棧指針或程序計數器(儘管我不知道具體的例子)。 C++(和C)標準沒有提到這些東西,因爲它們是「實現細節」。 AFAIK,這些標準都不需要堆疊。 – Mat

2

堆棧指針和程序計數器都是上下文的一部分(您可以認爲它本質上是CPU寄存器的狀態)。