信号是在软件层次上对中断的一种模拟,所以通常把它称为是软中断 信号和中断的区别 信号与中断的相似点: (1)采用了相同的异步通信方式; (2)当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序; (3)都在处理完毕后返回到原来的断点; (4)对信号或中断都可进行屏蔽。 信号与中断的区别: (1)中断有优先级,而信号没有优先级,所有的信号都是平等的; (2)信号处理程序是在用户态下运行的,而中断处理程序是在核心态下运行; (3)中断响应是及时的,而信号响应通常都有较大的时间延迟。 SIGABRT 进程停止运行 6 SIGINT 终端中断 2 SIGKILL 停止进程(此信号不能被忽略或捕获) SIGQUIT 终端退出 3 handler这个函数必须有一个int类型的参数(即接收到的信号代码),它本身的类型是void, handler也可以是下面两个特殊值: SIG_IGN 屏蔽该信号 SIG_DFL 恢复默认行为/* signal的函数原型,这里要注意它的返回值的类型, 它的参数,第一个是信号的编号,也就是具体是哪一个信号,固定的写法,没什么好说的, 第二个参数handler, 1, 赋值SIG_IGN代表忽略信号, 2,或者你可以自己写个信号处理函数,传给它地址, 3,如果你需要修改上面的设置,可以恢复默认SIG_DFL , 下面是一个自己写的信号处理函数, 说两点, 1,默认自带一个int类型参数,//开始还在找,这个num哪里传进去的, 2,返回类型是void,
下面是signal返回值的应用场景, 这是它的返回 typedef void (*sighandler_t)(int);
|
|
来自: XeonGate > 《Ubuntu 16.04.6》