SIGHUP 1 A 终端挂起或者控制进程终止 SIGINT 2 A 键盘中断Ctrl+c SIGQUIT 3 C 键盘的退出键被按下 SIGILL 4 C 非法指令 SIGABRT 6 C 由abort(3)发出的退出指令 SIGFPE 8 C浮点异常SIGKILL 9 AEF 采用kill -9进程编号强制杀死程序。 SIGSEGV 11 C 无效的内存引用 SIGPIPE 13 A 管道破裂,写一个没有读...
SIGINT:中断信号(通常由Ctrl+C产生),用于中断前台进程。 SIGTERM:终止信号,表示请求程序正常终止,允许程序执行清理操作。 SIGKILL:强制终止信号,无法被捕获或忽略,立即终止进程。 SIGSEGV:段错误信号,表示非法内存访问,用于捕获和处理内存错误。 SIGFPE:浮点异常信号,表示算术错误,如除零操作。 SIGALRM:定时器信号,用于定...
使用kill -l就可以看有多少种信号类型 kill -L 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP...
SIGSEGV是另一个C/C++程序员很熟悉的信号。当程序没有权利访问一个受保护的内存地址时,或者访问无效的虚拟内存地址(脏指针,dirty pointers,译注:由于没有和后备存储器中内容进行同步而造成。关于野指针,可以参见http://en.wikipedia.org/wiki/Wild_pointer 的解释。)时,会产生这个信号。缺省行为是终止进程,并且创建...
printf("SIGSEGV has been catched %d times.\n", segv_cnt++); siglongjmp(main_env,1); } int main(void) { structsigaction segv_act; volatileintlongjmp_cnt; segv_act.sa_handler=segv_handler; sigemptyset(&segv_act.sa_mask); segv_act.sa_flags=0; ...
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR ...
SIGSEGV 11 C 无效的内存引用 SIGPIPE 13 A 管道破裂: 写一个没有读端口的管道 SIGALRM 14 A 由alarm(2)发出的信号 SIGTERM 15 A 终止信号 SIGUSR1 30,10,16 A 用户自定义信号1 SIGUSR2 31,12,17 A 用户自定义信号2 SIGCHLD 20,17,18 B 子进程结束信号 ...
方法一:# ./myprg // 运行程序# ps -ef | grep myprg // 找出 myprg 的 pid# gdb myprg 2032 > debug.log // 让 gdb 接管 myprg 的运行# (gdb) continue此方法利用gdb调试器捕获SIGSEGV。上例中,将gdb输出信息存入debug.log,关闭终端,gdb并不退出,继续运行直到 myprg ...
SIGSEGV:11号信号,Invalid memory reference(无效的内存引用,解引用空指针、内存越界访问),action:core SIGPIPE:13号信号,Broken pipe: write to pipe with no readers(管道中止: 写入无人读取的管道,会导致管道破裂),action:term SIGCHLD:17号信号,Child stopped or terminated(子进程发送给父进程的信号,但该信号为...
force_sig(SIGSEGV, current); return0; } 其中最重要的是调用 restore_sigcontext 恢复原来内核栈的内容,要恢复原来内核栈的内容首先是要指定原来内核栈的内容,所以先要保存原来内核栈的内容。保存原来内核栈的内容也是在 setup_frame 函数中, setup_frame 函数把原来内核栈的内容保存到用户栈中(也就是上面所说的...