c++ - raise(SIGABRT) 和 abort() 方法之间的区别

标签 c++ c posix sigabrt

我知道 raise(SIGABRT)abort() 方法都会向自身发送 SIGABRT 信号。但是这两个功能之间有一些区别。 (例如 - abort() 函数解锁 SIGABRT 信号,而 raise(SIGABRT) 则不会。)

raise(SIGABRT)abort() 方法之间的其他区别是什么

最佳答案

主要区别在于 abort()如果 SIGABRT 被忽略,甚至会结束进程。

逐字记录来自 man abort :

If the SIGABRT signal is ignored, or caught by a handler that returns, the abort() function will still terminate the process. It does this by restoring the default disposition for SIGABRT and then raising the signal for a second time.

关于c++ - raise(SIGABRT) 和 abort() 方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212927/

相关文章:

c - C 中的 POSIX 信号量但仍然存在竞争条件?

c++ - 用 C++ 实现的可移植线程类

c++ - 如何检查 std::thread 是否仍在运行?

c - 逐行读取制表符分隔的内容,最后一列为空字符串

c - (struct *) vs (void *) -- C11/C99 中的函数原型(prototype)等价

c - 来自信号处理程序的 pthread_join

c++ - 隐写术 : Encoded audio and video file not being played, 已损坏。什么问题

派生类中默认(隐式)复制构造函数的 C++ 行为

c - 我是否正确地使用 OpenSSL 对缓冲区进行了 base64 编码?

c - 在 C 中用 2 个字符包围一个字符串