2012-04-17 56 views
0

這些函數的返回值並不意味着它們是否成功。有什麼方法可以知道嗎?如何知道sigsetjmp或siglongjmp是否失敗?

+2

這些標記有點奇怪 - 它們不是系統調用,並且您通常不能在C++中使用這些函數。 – 2012-04-17 15:17:53

+0

真的很好奇,你想要防範哪種失敗,以及你如何在C++中使用它們? – Potatoswatter 2012-04-17 15:34:46

回答

2

sigsetjmp不能失敗 - 它只是將調用者的上下文存儲到提供的緩衝區中。

siglongjmp不返回,因此無法通過返回值指示失敗。調用之前,您必須確保緩衝區有效。

在C++中,您通常不能使用這些函數;調用longjmp會導致未定義的行爲,如果在調用堆棧中存在任何具有非平凡析構函數的自動對象,並且與setjmp之間的匹配調用。

相關問題