#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void handle_sigabrt(int sig) {
printf("Caught signal %d (SIGABRT)\n", sig);
// Perform cleanup or logging here
exit(1);
}
int main() {
// Register the signal handler for SIGABRT (signal 6)
signal(SIGABRT, handle_sigabrt);
// Simulate an abort to trigger SIGABRT
printf("About to raise SIGABRT...\n");
raise(SIGABRT);
// This line will not be reached because the program exits in the signal handler
printf("This line will not be printed.\n");
return 0;
}
信号处理函数:
handle_sigabrt
是一个自定义的信号处理函数,用于处理 SIGABRT
信号(信号编号为 6)。当程序接收到 SIGABRT
信号时,这个函数会被调用。注册信号处理函数:
signal(SIGABRT, handle_sigabrt)
将 SIGABRT
信号与 handle_sigabrt
函数关联起来。这意味着当程序接收到 SIGABRT
信号时,会调用 handle_sigabrt
函数。触发信号:
raise(SIGABRT)
用来手动触发 SIGABRT
信号。这通常用于调试或模拟异常情况。程序终止:
exit(1)
终止运行。因此,printf("This line will not be printed.\n");
这一行代码不会被执行。这个示例展示了如何捕获和处理 SIGABRT
信号,并在信号发生时执行特定的操作。
上一篇:linux 查看操作系统命令
下一篇:linux安装git命令
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站