Singal函数
学习文章:Linux Signal函数详解:原理、使用与最佳实践-CSDN博客
-
函数原型
signal()是Linux系统中最基本的信号处理函数,其原型为:1 2 3#include <signal.h> void (*signal(int signum, void (*handler)(int)))(int);- 参数1(
signum):要处理的信号编号 - 参数2(
handler):信号处理函数指针 - 返回值:之前的信号处理函数指针
- 参数1(
-
常见信号类型
SIGHUP 1 Term 终端挂起或控制进程终止 SIGINT 2 Term 键盘中断(Ctrl+C) SIGQUIT 3 Core 键盘退出(Ctrl+) SIGILL 4 Core 非法指令 SIGABRT 6 Core 来自abort函数的终止信号 SIGFPE 8 Core 浮点异常 SIGKILL 9 Term 强制终止(不可捕获或忽略) SIGSEGV 11 Core 无效内存引用 SIGPIPE 13 Term 管道破裂 SIGALRM 14 Term 定时器信号 SIGTERM 15 Term 终止信号
set-longjmp
学习文章C 语言中 setjmp 和 longjmp - hazir - 博客园
setjmp相当于锚点,longjmp相当于是触发锚点
-
setjmp(env);没从longjmp跳回的时候返回0,若跳回则返回longjmp,env的携带的值
-
longjmp(env,i)跳回setjmp并返回i
-
使用:用set-longjmp实现循环
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16#include<stdio.h> #include<setjmp.h> #include<stdlib.h> int main() { jmp_buf env; int i,n; scanf("%d",&n); i=setjmp(env); if(i<=n) { printf("%d ",i); longjmp(env,++i); } return 0; }