当前位置: 首页 > news >正文

成都免费建网站公司网页升级重要通知请拿好笔记本

成都免费建网站公司,网页升级重要通知请拿好笔记本,wordpress修改域名文件夹,赣州网络推广行业目录 前言 一.信号的概念 二.信号的产生 1.键盘产生 2.系统调用 3.软件条件 4.异常 三.信号的保存 四.信号的处理 信号处理的方式 设定屏蔽信号 自定义处理信号 信号处理的时机 前言 进程信号(Process Signals)是操作系统与运行进程之间进行通…

目录

前言

一.信号的概念

二.信号的产生

1.键盘产生

2.系统调用

3.软件条件

4.异常

三.信号的保存

四.信号的处理

信号处理的方式

设定屏蔽信号

自定义处理信号

信号处理的时机


前言

        进程信号(Process Signals)是操作系统与运行进程之间进行通信的一种机制。信号通常用于通知进程发生了某些事件,如异常情况、硬件事件、系统调用的错误或用户发出的中断请求。信号的处理方式与异常处理类似,它允许进程在接收到信号时,暂时中断当前的执行流程,以处理特定的事件,  学习进程的信号有利于我们理解程序的运行情况

一.信号的概念

信号是Linu×系统提供让用户(进程)给其他进程发送异步信息的一种方式,属于软中断

进程在接收到信号时,暂时中断当前的执行流程,以处理特定的事件

使用kill -l 命令查看全部信号

[1,31]信号是非实时信号,  进程收到信号后选择在合适的时间处理

[34,64]信号是实时信号,  进程收到信号后需要马上处理

这些信号也是一个个宏定义,

#define	SIGINT		2	/* Interactive attention signal.  */
#define	SIGILL		4	/* Illegal instruction.  */
#define	SIGABRT		6	/* Abnormal termination.  */
#define	SIGFPE		8	/* Erroneous arithmetic operation.  */
#define	SIGSEGV		11	/* Invalid access to storage.  */
#define	SIGTERM		15	/* Termination request.  *//* Historical signals specified by POSIX. */
#define	SIGHUP		1	/* Hangup.  */
#define	SIGQUIT		3	/* Quit.  */
#define	SIGTRAP		5	/* Trace/breakpoint trap.  */
#define	SIGKILL		9	/* Killed.  */
#define SIGBUS		10	/* Bus error.  */
#define	SIGSYS		12	/* Bad system call.  */
#define	SIGPIPE		13	/* Broken pipe.  */
#define	SIGALRM		14	/* Alarm clock.  */

二.信号的产生

1.键盘产生

        比如程序在前台运行的时候,  我们中止这个进程会直接ctrl+c,  或者ctrl+/,  这些都会被识别为信号处理Ctrl+c 会被识别为SIGINT,  Ctrl+/会被识别为SIGQUIT

        使用键盘输入的时候,  键盘控制器(通常是PS/2或USB控制器)会生成一个硬件中断信号。这个信号会通过系统总线传递给CPU  触发硬件中断,  CPU就会去中断向量表中执行对应的方法,  读取键盘输入,  最后判断键盘输入,  如果解释为字符就进行写入,  如果解释为信号就向对应的进程写入信号

2.系统调用

使用系统调用发送信号

向一个指定进程发送信号

向自己发送指定信号

向自己发送SIGABRT(6)信号

3.软件条件

比如这个是一个闹钟

设定闹钟,时间到了向自己发SIGALRM(14)信号

如果闹钟已经设定,  则返回上个闹钟的剩余时间

4.异常

比如

SIGFPE(8) 浮点数错误

SIGSEGV(11) 段错误

cpu在计算的是否如果出现异常,  就会对自己发生硬件中断,  使得操作系统来处理这些异常,  

比如发生除0错误,  cpu计算错误,  寄存器里有状态标识寄存器,  OS识别到这个标记就会执行相对应的方法操作系统就会给该进程写入SIGFPE信号

发生越界访问就会写入SIGSEGV信号

三.信号的保存

信号保存在进程的PCB中,  采用位图结构保存,  所谓发送信号就是OS向进程的PCB写入信号

  • 实际执行信号的处理动作称为信号递达(Delivery)
  • 信号从产生到递达之间的状态,称为信号未决(Pending)
  • 进程可以选择阻塞 (Block )某个信号。
  • 被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作.
  • 注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。

进程收到的信号会被保存在pending表,  如果接收到这个信号,  就置为1

block表表示这个信号是否被忽略

handler表示这个信号处理的动作

四.信号的处理

信号处理的方式

1.默认处理

2.自定义处理

3.忽略

使用 man 7 signal来查看信号的默认处理

Term   直接中止进程
Ign    不做处理
Core   核心转储
Stop   暂停进程
Cont   如果该进程当前已暂停,则继续该进程.

设定屏蔽信号

信号集操作函数

设置信号屏蔽

how常用选项

  • SIGBLOCK:  表示要添加忽略处理的信号
  • SIGUNBLOCK:  表示将这些信移出block表
  • SIGSETMASK:  表示直接将屏蔽信号修改为传入的信号集

可以使用sigpending获得pending表

自定义处理信号

对指定信号自定义处理

handler:  一个函数指针,   表示要执行的自定义函数

比如将SIGINT信号自定义处理

#include<iostream>
#include<signal.h>
void handler(int sig)
{//自定义处理
}int main()
{signal(SIGINT,handler);return 0;
}

之后进程收到这个信号就会直接执行handler函数

如果需要忽略这个信号

signal(SIGINT,SIG_IGN);

信号处理的时机

进程从内核态切换到用户态的时候OS会检测处理信号

http://www.yayakq.cn/news/430461/

相关文章:

  • 2019广东省工程建设网站怎么开通微信小程序卖东西
  • 河南省汝州市文明建设网站查失信被执行人名单查询
  • 绵阳网站建设设计做直播网站找哪个网站
  • 苏州网站公司性价比高柳州网站建设
  • 微信公众号 网站开发h5营销型网站
  • 池州做网站的公司公司网站建设一般要多少钱
  • 2018网站建设涉及网站左边logo图标怎么做
  • 试用型网站怎么用自己笔记本建设网站
  • 织梦手机网站制作兰州网站制作服务电话
  • 学校门户网站建设工作室内设计师怎么找
  • .net 网站管理系统福州品牌网站建设公司
  • 开发建设网站手机网站抢拍是怎么做的
  • 利用高权重网站做关键词朝阳区北京网站建设
  • 紫云网站建设即速应用微信小程序官网
  • 网站建设案例展示不可上网
  • 网站设计项目建设内容网络规划的研究内容
  • 网站登陆系统怎么做淘宝宝贝关键词排名查询工具
  • 做网站不会P图怎么办上海人才网档案查询
  • 公司网站设计与管理杭州网络
  • 做请帖的网站做自己的网站有什么用
  • 中国建设工程人才库官方网站域名建议网站
  • 注册免费的网站wordpress 路由设计
  • 网站主目录农业信息网站建设意义
  • 网站网站环境搭建教程凡科女装
  • 手机怎么制作网站学校网站手机站的建设
  • 中国糕点网页设计网站揭阳网站建设方案外包
  • react可以做门户网站么上海展台搭建
  • 爬虫科技网站建设如何经营自己的网站
  • 免费个人域名网站铁岭网站建设 258魔站
  • 网站关键词和描述黄冈网站推广软件视频下载