SIGSEGV 是指在程序中訪問未分配的內存或超過內存邊界的情況下發生的段錯誤。在 Linux 下,可以通過以下方法來優雅地處理 SIGSEGV:
#include <stdio.h>
#include <signal.h>
void sigsegv_handler(int sig) {
printf("Segmentation fault occurred\n");
// 進行必要的清理工作
exit(1);
}
int main() {
signal(SIGSEGV, sigsegv_handler);
// 產生一個段錯誤
char *ptr = NULL;
*ptr = 'a';
return 0;
}
ulimit -c unlimited
然后在程序運行時,當產生 SIGSEGV 信號時,會生成一個 core 文件,可以使用 gdb 來分析這個文件。
以上方法可以幫助在 Linux 下優雅地處理 SIGSEGV 信號,從而提高程序的穩定性和可靠性。