Linux信号编程示例,Linux信号(系统编程信号)

更多资料请点击:我的目录

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

Linux信号:

7e886d3d8514c5cc6423cc52d6cdefb5.png

信号的作用:linux通过信号去控制进程的行为动作(程序的退出,程序的暂停,程序的继续)

信号总共有四种响应方式:

第一种:信号的默认响应动作(linux系统已经规定好的)

第二种:改变信号的响应动作

第三种:信号的忽略

第四种:信号的阻塞(屏蔽)

常用信号

SIGINT------------------相当于ctrl+c

SIGCONT--------------程序继续

SIGSTOP--------------程序暂停

SIGKILL----------------杀死进程

注意:SIGKILL 和 SIGSTOP这两个信号既不能改变它们的响应动作,也不能忽略,其他的信号可以

(1)信号的发送

终端手动输入:

kill -信号的序号 进程的ID号

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

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

killall -信号的名字 进程的名字

程序中:

头文件:#include

函数原型:int kill(pid_t pid, int sig);

参数:pid:进程的ID号

sig:信号的序号

返回:成功:0

失败:-1

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

头文件:#include

函数原型: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

函数原型:int pause(void);

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

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

头文件:#include

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

参数:sig:要发送的信号

具体应用实例:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值