2012-04-17 90 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之间的匹配调用。