比@ alk的答案更普遍,你不能在严格符合C代码的信号处理程序中调用任何库函数。
每 的 7.1.4库函数的使用 强> ,C标准第4段 :
标准库中的函数不保证是可重入的,并且可以修改具有静态或线程存储持续时间的对象。 188
注意 脚注188 就该段而言,指出:
因此,信号处理程序通常不能调用标准库函数。
正如@alk所说,POSIX允许您只安全地呼叫 的 异步信号安全 强> 在信号处理程序中起作用。
如果没有针对您的平台的特定文档,声明特定函数调用在信号处理程序中是安全的,则无法从信号处理程序中调用函数。