c++ - 如何知道 sigsetjmp 或 siglongjmp 是否失败?

标签 c++ system-calls

这些函数的返回值并不代表它们是否成功。有办法知道吗?

最佳答案

sigsetjmp 不会失败 - 它只是将调用者的上下文存储到提供的缓冲区中。

siglongjmp 不返回,因此无法通过返回值指示失败。在调用之前必须确保缓冲区有效。

在C++中,你通常不能使用这些函数;如果在调用堆栈和匹配的 setjmp 调用之间存在任何具有非平凡析构函数的自动对象,则调用 longjmp 会产生未定义的行为。

关于c++ - 如何知道 sigsetjmp 或 siglongjmp 是否失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10193889/

相关文章:

C++类构造函数()

c++ - 如何强制执行额外的预处理器宏扫描

go - osxfuse cgofuse mkdir 输入/输出错误

c - 重启参数 RB_HALT_SYSTEM 和 RB_POWER_OFF 有什么区别?

c++ - CRTP与 "derived"中函数的直接实现

c++ - 缩短作为模板参数传递到 CRTP ("pass me"中的长模板派生类)

c - C语言中lseek系统调用成功

c - Linux中如何读取 "proc/pid/stat"中的开始时间数据来计算耗时?

c - fopen(NULL, "r") 在内核 __range_ok(NULL, 1) 变为真时崩溃

c++ - 是否有可能确定/断言,如果一个虚函数被覆盖,另一个虚函数也被覆盖?