Linux系统编程——可重入函数和不可重入函数

个函数在被调用执行期间(尚未调用结束),由于某种时序又被重复调用,称之为“重入”。根据函数实现的方法可分为“可重入函数”和“不可重入函数”两种。看如下时序。

1600805-20190420231940940-1386272416.png

显然,insert函数是不可重入函数,重入调用,会导致意外结果呈现。究其原因,是该函数内部实现使用了全局变量。

注意事项
  1. 定义可重入函数,函数内不能含有全局变量及static变量,不能使用malloc、free

  2. 信号捕捉函数应设计为可重入函数

  3. 信号处理程序可以调用的可重入函数可参阅man 7 signal

  4. 没有包含在上述列表中的函数大多是不可重入的,其原因为:

a) 使用静态数据结构

b) 调用了malloc或free

c) 是标准I/O函数

转载于:https://www.cnblogs.com/Mered1th/p/10743337.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值