[学习笔记]信号处理函数遇上可重入和不可重入函数
2015-04-22 17:07
281 查看
可重入函数概念 q 为了增强程序的稳定性,在信号处理函数中应使用可重入函数。 q 所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。因为进程在收到信号后,就将跳转到信号处理函数去接着执行。如果信号处理函数中使用了不可重入函数,那么信号处理函数可能会修改原来进程中不应该被修改的数据,这样进程从信号处理函数中返回接着执行时,可能会出现不可预料的后果。不可再入函数在信号处理函数中被视为不安全函数。 q 满足下列条件的函数多数是不可再入的:(1)使用静态的数据结构,如getlogin(),gmtime(),getgrgid(),getgrnam(),getpwuid()以及getpwnam()等等;(2)函数实现时,调用了malloc()或者free()函数;(3)实现时使用了标准I/O函数的 |
man手册实践 man 7 signal 查找可重入函数和不可重入函数,下一个内核用文件描述符来优化信号 |
结论: 在信号处理函数中,尽量不使用全局变量和静态变量的函数。特别是这个变量在程序中随时读写。 |
相关文章推荐
- 信号处理程序中调用不可重入函数getpwnam 起结果是不可预见的。
- 信号编程之信号发送及信号处理函数遇到不可重入函数
- 信号处理signal、sigaction、pause、信号嵌套处理、不可重入函数
- [学习笔记]信号基本概念(中断和信号)/名称及常用信号/信号处理/signal函数实践
- UNIX环境编程学习笔记(25)——信号处理进阶学习之 sigaction 函数
- UNIX环境编程学习笔记(25)——信号处理进阶学习之 sigaction 函数
- 计算机视觉与图像处理学习笔记(三)opencv的基本数据类型与简单图像处理函数
- 数字语音信号处理学习笔记——语音信号的同态处理(1)
- Unix信号处理学习笔记
- Linux C学习笔记 —— 字符串处理函数(string.h)
- 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
- 数字语音信号处理学习笔记——语音信号的数字模型(1)
- 信号处理学习笔记(二)Decimation信号抽取
- Go圣经-学习笔记之函数和错误处理
- [离散时间信号处理学习笔记] 1. 离散时间信号与离散时间系统
- 《UNIX环境高级编程》笔记--信号及其处理函数signal
- 数字语音信号处理学习笔记——语音信号的同态处理(3)
- PHP字符串处理函数示例学习笔记
- Linux程序设计学习笔记——异步信号处理机制
- 【Matlab图像处理】学习笔记:cat函数合成RGB 图像