信号的概念,认识,处理动作

一、信号的基本概念

1. 概念

信号 :通知(事情通知),用来通知某个进程发生了某一个事情;事情,信号都是突发事件, 信号是异步发生的,信号也被称呼为“软件中断”

信号名字,都是以SIG开头,上节课SIGHUP(终端断开信号);UNIX以及类(类似)UNIX操作系统(linux,freebsd,solaris);支持的信号数量各不相同。10-60多个之间;

信号既有名字,其实也都是一些数字,信号是一些正整数常量;信号就是宏定义(数字,从1开始)

#include <signal.h>
find / -name "signal.h" | xargs grep -in "SIGHUP"

2. 信号产生

  1. 某个进程发送给另外一个进程或者发送给自己;
  2. 由内核(操作系统)发送给某个进程。例如:1. 通过在键盘输入命令ctrl+c[中断信号],kill命令;2. 内存访问异常,除数为0等等,硬件都会检测到并且通知内核;

二、通过kill命令认识一些信号

//kill :kill 进程id ,他的工作是发个信号给进程;
	//kill能给进程发送多种信号;
	//ps -eo pid,ppid,sid,tty,pgrp,comm | grep -E 'bash|PID|nginx'
	//sudo strace -e trace=signal -p 1184
 
	//a)如果你单纯的用kill 进程id,那么就是往 进程发送SIGTERM信号(终止信号)
	//kill -数字 进程id,能发出跟这个数字对应的信号  -1 进程id,SIGHUP信号去
 
	//b)如果我门用kill -1 进程id,那么就是往进程nginx发送SIGHUP终止信号;同时进程nginx就被终止掉了;
	//c)kill -2 进程id,发送SIGINT信号;
	//kill -数字 进程id ,能发送出多种信号;

kill 命令不同数字所能发出的不同信号
在这里插入图片描述

三、进程的状态

在这里插入图片描述
在这里插入图片描述

四、常用的信号列举

在这里插入图片描述

五、信号处理的相关动作

当某个信号出现时,我们可以按三种方式之一进行处理,我们称之为信号的处理或者与信号相关的动作;

  1. 执行系统默认动作 ,绝大多数信号的默认动作是杀死你这个进程;
  2. 忽略此信号(但是不包括SIGKILL和SIGSTOP)
  3. kill -9 进程id,是一定能够把这个进程杀掉的;、
  4. 捕捉该信号:我写个处理函数,信号来的时候,我就用处理函数来处理;(但是不包括SIGKILL和SIGSTOP)
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值