为什么说,信号处理函数里面不要用printf等库函数

2025-03-29 19:28:36
推荐回答(2个)
回答1:

像printf()和malloc()之类的标准库函数,它们会使用全局的数据(比如malloc()需要使用进程的堆数据结构)是不可重入的,即使加锁也无法解决,加锁可以使得库函数Tread-safe,但是无法解决可重入。
如果需要用这些printf或者malloc之类的函数
可以设置flag, 在信号处理函数之外 根据flag做相应的操作

回答2:

printf函数是一个不可重入函数,会引起程序死锁