Linux中signal()函数详解
来源:互联网 发布:debian 没有yum 编辑:程序博客网 时间:2024/06/05 07:24
signal()函数:
第一个参数是要捕捉的信号(查看信号:kill -l,9号SIGKILL信号不能被捕捉);
第二个参数表示我们要对信号进行的处理方式。
信号的处理方式一般有三种:
(1)忽略此信号(SIG_IGN):
#include<stdio.h>#include<signal.h>int main(){ signal(2,SIG_IGN); while(1) { printf("2333\n"); sleep(1); } return 0;}
当执行程序时,陷入死循环,此时按下Ctrl+c进程并不会停止,因为我们对Ctrl+c产生的2号SIGINT信号采取了忽略处理,若要停止进程可用Ctrl+\(SIGQUIT);
(2)执行该信号的默认处理动作(SIG_DFL):
#include<stdio.h>#include<signal.h>int main(){ signal(2,SIG_DFL); while(1) { printf("2333\n"); sleep(1); } return 0;}
当执行程序时,同样是死循环,此时按下Ctrl+c进程停止,因为我们对2号信号采取默认动作处理,系统默认2号信号终止进程。
(3提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕捉(catch)一个信号:
#include<stdio.h>#include<signal.h>void handler(int signo)//自定义一个函数处理信号{ printf("catch a signal:%d\n:",signo);}int main(){ signal(2,handler); while(1) { printf("1111\n"); sleep(1); } return 0;}
当执行程序时,按下Ctrl+c,进程并不会停止,而是去执行自定义的函数handler(),若要停止,按下Ctrl+\。运行结果如图:
linux系统中的信号:(1-31,34-64)
0 0
- Linux中signal()函数详解
- 详解 linux signal函数
- Linux 信号详解一(signal函数)
- linux通信机制signal()函数详解
- Linux Signal (2): signal函数
- Linux Signal (2): signal函数
- Linux Signal (2): signal函数
- linux的c中signal函数
- linux 中 kill() 与 signal() 函数
- signal函数详解
- signal() 函数详解
- linux SIGNAL 详解
- linux signal 详解
- linux signal 详解
- linux signal 详解
- Linux信号SIGNAL详解
- linux Signal信号详解
- Linux Signal信号详解
- 验证码60倒计时js代码
- 在 Ubuntu 16.04 中安装谷歌 Chrome 浏览器
- 共轭法解线性方程组-简介无推导
- 图的存储表示——邻接矩阵
- 大话数据结构九:队列的链式存储结构(链队列)
- Linux中signal()函数详解
- ibatis的一对多查询
- 排序之选择排序的java语言简单实现
- GCD 多线程API编程笔记
- sql server数据库,已经创建了user表,查询表的时候报错
- Android经典蓝牙开发简介(Google官网译文)
- 解决Github安装缓慢问题
- Python-OpenCV 处理图像:图像中边界和轮廓检测
- spring xml 例子