一。核心理论
1.信号处理流程
内核->选择信号->发送信号->进程B->处理信号
2.信号类型
Linux系统支持的所有信号均定义在/usr/include/asm/signal.h,其中常见的信号时
SIGKLL: 杀死进程
SIGSTOP:暂停进程
SIGCHLD:子进程停止或结束时用来通知父进程
二。函数学习
1.发送信号
函数名: kill
函数原型: intkill(pid_t pid,int sig)
函数功能: 向进程发送信号
所属头文件: <sys/types.h><signal.h>
返回值: 成功时:返回0
失败时:返回-1
参数说明: pid : pid > 0 ,pid参数指向接受信号的进程
sig : 指明要发送的信号
2.处理信号
函数名: signal
函数原型: typedef void(*sighandler_t)(int)
sighandler_t signal(int signum,sighandler_t handler)
函数功能: 设置信号的处理方式
所属头文件: <signal.h>
返回值: 成功时 :返回处理函数的指针
失败时 :返回SIG_ERR
参数说明: signum : 要处理的信号
handler: 对应信号的处理方式
SIG_IGN:忽视这个信号(不处理)
SIG_DFL:交给内核来处理
用户自定义方式:交给用户自定义的方式来处理
3.用户自定义方式
1.发送信号 kill -n SIGINT pid
pid 是指向接受信号的进程号。(ps aux 查看一下这个命令)
2.kill 发送函数
./aprocee pid
pid 是指向接受信号的进程号。(ps aux 查看一下这个命令)