目前我在信号处理程序中使用一些非信号安全函数,如 fprintf
、snprintf
。但是我需要用像写这样的信号安全函数来替换它。但是 write
函数只使用一个缓冲区,或者一个非格式化的字符串。还有其他方法可以打印格式化字符串吗?
最佳答案
在信号处理程序中设置一个标志。然后在从信号处理程序返回后将命令写入文件。
static volatile sig_atomic_t sig_rcvd = 0;
void sig_hanlder(int sig)
{
sig_rcvd = 1;
}
如果 sig_rcvd
被设置然后写入文件并可能将 sig_rcvd
重置回 0。这样你就可以避免从信号调用任何异步信号不安全的函数处理程序。
关于c - 如何使用信号安全函数将格式化字符串写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41759948/