跳转至

c++的信号和异常

信号和异常都是c++程序会遇到的,以前常把信号也当异常来看待,当其实两者是截然不同的东西

信号

信号不仅是对c++程序,而是对所有linux程序,是内核在进程由内核态转用户态时,检查信号槽并调用信号处理函数(用户定义或者默认)。
有些信号可以由程序处理(常见退出信号SIGINT),而有些无法处理(常见退出信号SIGABT, 段错误信号SIGSEGV),而大多信号默认是退出进程。

异常

c++的异常是c所没有的,异常一般在出现逻辑错误运行时错误时要抛出异常,如果没有异常处理函数,则coredump。

触发方式

触发信号用raise,而异常用trow

int raise(int sig);