signal 函数1|学习笔记

简介: 快速学习 signal 函数1

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频signal 函数1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/11013


signal 函数1

 

内容介绍

一.处理方式

二.功能

三.参数

四.系统默认动作

五.运行

 

一.处理方式

收到一个信号,像之前学到的GOI 一样,创建完了之后我可以去设置一下收到按某个按钮做什么事,不同的按钮做不同的事,信号设定,等待信号的到来,原理都是一致的,进程接收到信号后的处理方式。

1.当我收到一个信号时,可以执行系统默认动作

2.忽略此信号

3.执行自定义信号处理函数,程序中可用函数 signal ()改变信号的处理方式。

如果是第3中就要自己设定一个函数,进行定义,收到某一个信号就调自己的函数,干什么事都是收到的信号来决定的

在信号设定中是用 signal 去设定的,将来进程收到这个信号的时候,就要调用 signal 函数,handler 是函数值的类型,就是将来收到信号,就是自动调用 handler 函数。

 

二.功能

功能:

注册信号处理函数(不可用于 SIGKILL,SIGSTOP信号),即确定收到信号后处理函数的入口

 

三.参数

参数:

signal 信号编号 handler 的取值:忽略该信号,SIG-IGN,执行

 

四.系统默认动作

系统默认动作:

SIG-DFL ,自定义信号处理函数:信号处理函数名,如果调了参数是 SIG-DFN 意味这将信号忽略,如果第二个参数是 SIG-DFL的话,意思就是将来收到 signum的信号,第三种情况就是自己的进来,成功返回上一个入口,然后失败返回上一个。跟GDP效果按钮差不多。

 

五.运行

运行就会打印一句话:

wait for 然后 signal 进行信号设定,当我收到 SIGTNT 时就会调用函数,收到另外一个信号也会调用,handler 函数,然后接下来 pause 就继续等信号,又等一个信号之后程序就结束了,回调函数是自己定义的,必须没有参数,有一个整行的参数,将来你收到哪一个信号之后就调这个回调函数, signo 就是信号的标识,就是编号,你收到其他信号就不调这个函数,然后看效果2,image.gif

等待信号,回调函数被执行,按 control 加执行就导入了一个 recv SIGQUIT 就收到了两个信号,两个信号就都结束了,所以和回调函数类似,没有返回值。

相关文章
|
Java Linux 编译器
Linux安装gcc 4.9.4编译器详解(CentOS 7 64位系统)
Linux安装gcc 4.9.4编译器详解(CentOS 7 64位系统)
3087 0
|
8月前
|
存储 安全 算法
鸿蒙NEXT如何保证应用安全:详解鸿蒙NEXT数字签名和证书机制
本文对鸿蒙NEXT公开资料进行了深入分析和解读,梳理了鸿蒙单框架应用的签名机制,拆解每一步的实操过程和背后的实现原理,并对源码分析整理签名的校验机制。从中管中窥豹,探究鸿蒙系统的安全设计思路,给从事鸿蒙研发的同学提供一些借鉴。
853 3
|
存储 索引
一文理解哈希冲突四种解决方法
一文理解哈希冲突四种解决方法
2594 1
一文理解哈希冲突四种解决方法
|
JSON iOS开发 数据格式
在 VScode 中设置快捷键快速添加注释(文件头部、文件函数)
在编写代码的过程中,为了增加代码的可读性和维护性,我们通常会添加注释来解释代码的作用和功能。为了提高效率,我们可以在 VScode 中设置快捷键,以便快速添加注释,包括文件头部和函数注释。下面是详细的设置步骤:
6908 1
在 VScode 中设置快捷键快速添加注释(文件头部、文件函数)
|
调度
按键演示休眠与唤醒场景--基于IMX6ULL
按键演示休眠与唤醒场景--基于IMX6ULL
321 0
按键演示休眠与唤醒场景--基于IMX6ULL
|
芯片
imx6ull的GPIO操作方法
imx6ull的GPIO操作方法
487 0
imx6ull的GPIO操作方法
|
Ubuntu
ubuntu16.0更改国内阿里源,速度起飞,亲测可用
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup #备份当前也就是默认官方的源列表
2925 0
|
算法 物联网 Linux
Hi3516开发笔记(一):海思HI3516DV300芯片介绍,入手开发板以及Demo测试
Hi3516开发笔记(一):海思HI3516DV300芯片介绍,入手开发板以及Demo测试
Hi3516开发笔记(一):海思HI3516DV300芯片介绍,入手开发板以及Demo测试
高封装的property方法
class Person(): def __init__(self): self.__age = 0 def set_age(self, age): if age < 0 or age > 200: self.
783 0