文章目录
一.信号
1.信号的基本概念
信号是系统响应某个条件而产生的事件,进程接收到信号会执行相应的操作;
与信号有关的系统调用在<signal.h>头文件中:
2.信号的存储位置:
vim /usr/include/x86_64-linux-gnu/bits/signum.h
3.常见信号的值,及对应的功能说明
4.信号的值在系统源码中的定义如下:
信号名称 信号代号
#define SIGHUP 1
#define SIGINT 2 //键盘按下 Ctrl+c 时,会产生终端中断信号
#define SIGQUIT 3//键盘按下 Ctrl+\ 时,会产生终端退出信号
#define SIGILL 4
#define SIGTRAP 5
#define SIGABRT 6
#define SIGIOT 6
#define SIGBUS 7
#define SIGFPE 8
#define SIGKILL 9 //该信号的响应方式不允许改变
#define SIGUSR1 10
#define SIGSEGV 11
#define SIGUSR2 12
#define SIGPIPE 13 //读端关闭的描述符,写端写入时产生,该信号会终止程序(向 无读进程的管道写数据)
#define SIGALRM 14
#define SIGTERM 15 //系统 kill 命令默认发送的信号
#define SIGSTKFLT 16
#define SIGCHLD 17 //子进程结束后,会默认给父进程发送该信号
#define SIGCONT 18
#define SIGSTOP 19
#define SIGTSTP 20
#define SIGTTIN 21
#define SIGTTOU 22
#define SIGURG 23
二.相应方式
三种相应方式:默认,忽略,自定义
三.改变信号的方式
1.设置信号的相应方式:通过函数signal();
man signal:
2.默认:SIG_DFL,忽略:SIC_IGN;
自定义:void fun_sig(int sig);
3.默认响应方式
ctr+c 结束程序;
4.自定义相应方式
ps -ef|grep “程序名字”
kill -9 PID
或者ctrl+\ 结束程序;