在 Linux 中,异常处理机制主要由信号和异常处理程序(也称为信号处理程序)两个部分组成。信号是一种软件中断,用于通知进程发生了某些事件或出现了某些异常情况。在 Linux 中,有许多不同的信号,例如 SIGSEGV(非法内存访问)、SIGKILL(强制终止进程)和 SIGINT(中断信号,通常由 Ctrl+C 触发)等。
当进程收到一个信号时,它会停止正在执行的工作并执行与该信号关联的异常处理程序。这个处理程序可以是默认处理程序,也可以是由进程自己定义的处理程序。默认处理程序通常是终止进程或忽略信号,但也有一些默认处理程序会做一些其他的操作,例如在出现非法内存访问时向进程发送核心转储文件。
如果进程定义了自己的信号处理程序,那么在收到信号时,内核会调用这个处理程序来处理信号。处理程序可以根据需要执行各种操作,例如记录日志、恢复进程状态、重新启动进程或向其他进程发送信号等。
参考: