一:概念
(1)所谓的可重入函数:就是我们在信号处理函数中 调用它 是安全的;可重入函数,即在信号处理程序中保证调用安全的函数,这些函数是可重入的并被称为异步信号安全的;比如,malloc就是一个不可重入函数,当我们在主函数当中调用它时,如果,它还没处理结束(和内部的实现有关),这个时候,又来了一个信号,而我们又在信号处理函数当中去调用malloc,这个时候,由于malloc自己内部实现的原因,可能要用到某个全局变量等,由于在主函数当中还没结束调用,所以,就会在信号处理函数当中出现异常的情况。
处理信号程序流程:
二:不可重入函数使用建议
//在写信号处理函数的时候,要注意的事项:
(a)在信号处理函数中,尽量使用简单的语句做简单的事情,尽量不要调用系统函数以免引起麻烦;
(b)如果必须要在信号处理函数中调用一些系统函数,那么要保证在信号处理函数中调用的 系统函数一定要是可重入的;
©如果必须要在信号处理函数中调用那些可能修改errno值的可重入的系统函数,那么 就得事先备份e