Linux信号(系统编程信号)

更多资料请点击:我的目录
本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。

Linux信号:
Linux信号(系统编程信号)_第1张图片
信号的作用:linux通过信号去控制进程的行为动作(程序的退出,程序的暂停,程序的继续)

信号总共有四种响应方式:
第一种:信号的默认响应动作(linux系统已经规定好的)
第二种:改变信号的响应动作
第三种:信号的忽略
第四种:信号的阻塞(屏蔽)

常用信号
SIGINT------------------相当于ctrl+c
SIGCONT--------------程序继续
SIGSTOP--------------程序暂停
SIGKILL----------------杀死进程
注意:SIGKILL 和 SIGSTOP这两个信号既不能改变它们的响应动作,也不能忽略,其他的信号可以

(1)信号的发送

终端手动输入:

kill 		-信号的序号 进程的ID号			
kill 		-信号的名字 进程的ID号	
killall 	-信号的序号 进程的名字	
killall 	-信号的名字 进程的名字

程序中:

头文件:					#include <signal.h>

函数原型:				int kill(pid_t pid, int sig);
参数:					pid:	进程的ID号
						sig:	信号的序号
返回:					成功:0
						失败:-1

(2)捕捉信号并改变信号的响应动作

头文件:					#include <signal.h>

函数原型:				void (*signal(int sig, void(*func)(int)))(int);  
	
参数:					sig:	表示捕捉到的信号的序号
						func:	void(*p)(int)		改变信号的响应动作
								SIG_IGN 			忽略信号
								SIG_DFL  			按照信号默认的动作响应

返回值:					成功 	最近一次调用该函数时第二个参数的值
						失败 	SIG_ERR

signal函数总共有三个功能:
功能一:改变信号的响应动作
功能二:SIG_IGN 忽略信号,信号发送给进程,进程直接舍弃
功能三:SIG_DFL 按照信号默认的动作响应

(3)阻塞进程,等待信号的到来

头文件:					#include <unistd.h>

函数原型:				int pause(void); 

特点:信号不来,一直阻塞,信号来了就不阻塞了

(4)自己给自己发送信号

头文件:					#include <signal.h>

函数原型:				int raise(int sig);

参数:					sig:	要发送的信号

具体应用实例:
改变信号的响应动作与发送信号的应用实例[signal()/kill()]

//–//–待更–//–//

你可能感兴趣的:(系统编程)