开发者学堂课程【物联网开发- 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,
等待信号,回调函数被执行,按 control 加执行就导入了一个 recv SIGQUIT 就收到了两个信号,两个信号就都结束了,所以和回调函数类似,没有返回值。