可重入函数概念 q 为了增强程序的稳定性,在信号处理函数中应使用可重入函数。 q 所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。因为进程在收到信号后,就将跳转到信号处理函数去接着执行。如果信号处理函数中使用了不可重入函数,那么信号处理函数可能会修改原来进程中不应该被修改的数据,这样进程从信号处理函数中返回接着执行时,可能会出现不可预料的后果。不可再入函数在信号处理函数中被视为不安全函数。 q 满足下列条件的函数多数是不可再入的:(1)使用静态的数据结构,如getlogin(),gmtime(),getgrgid(),getgrnam(),getpwuid()以及getpwnam()等等;(2)函数实现时,调用了malloc()或者free()函数;(3)实现时使用了标准I/O函数的 |
man手册实践 man 7 signal 查找可重入函数和不可重入函数,下一个内核用文件描述符来优化信号 |
结论: 在信号处理函数中,尽量不使用全局变量和静态变量的函数。特别是这个变量在程序中随时读写。 |
[学习笔记]信号处理函数遇上可重入和不可重入函数
推荐阅读
- 在kubernetes集群里集成Apollo配置中心(3)之交付Apollo-portal至Kubernetes集群
- 实战交付一套dubbo微服务到k8s集群(7)之交付dubbo服务的消费者集群到K8S
- 【16位RAW图像处理一】:基于Fast Bilateral Filtering 算法的 High-Dynamic Range(HDR) 图像显示技术。
- selenium中webdriver跳转新页面后定位置新页面的两种方式
- mysql密码正确却提示错误, 不输入密码反而能登录
- Python多版本共存安装
- Mysql数据库查询语法详解
- Python 连接redis密码中特殊字符问题
- 什么是redis缓存穿透, 缓存雪崩, 缓存击穿
- phpcms v9 完美更换整合Ueditor 1.3