目前我在信号处理程序中使用了一些非信号安全函数,如fprintf,snprintf.但我需要用像write这样的信号安全功能来代替它.但是write函数只使用缓冲区或非格式化字符串.有没有其他方法来打印格式化的字符串? 最佳答案 在信号处理程序中设置一个标志.然后从信号处理程序返回后执行writs文件.
static volatile sig_atomic_t sig_rcvd = 0;
void sig_hanlder(int sig)
{
sig_rcvd = 1;
}
如果设置了sig_rcvd,那么写入文件并可能将sig_rcvd重置为0.这样就可以避免从信号处理程序调用任何异步信号不安全的函数.