【发布时间】:2023-03-14 17:34:01
【问题描述】:
这些函数的返回值并不意味着它们是否成功。有办法知道吗?
【问题讨论】:
-
标签有点奇怪——它们不是系统调用,你通常不能在 C++ 中使用这些函数。
-
真的很好奇,你要防范什么样的失败,你是如何在C++中使用这些的?
标签: c++ system-calls
这些函数的返回值并不意味着它们是否成功。有办法知道吗?
【问题讨论】:
标签: c++ system-calls
sigsetjmp 不会失败 - 它只是将调用者的上下文存储到提供的缓冲区中。
siglongjmp 不返回,因此无法通过返回值指示失败。调用前必须确保缓冲区有效。
在 C++ 中,您通常不能使用这些函数;如果在调用堆栈上与对 setjmp 的匹配调用之间存在任何具有非平凡析构函数的自动对象,则调用 longjmp 会给出未定义的行为。
【讨论】: