c - 如何使用信号安全函数将格式化字符串写入文件?

标签 c linux signals

目前我在信号处理程序中使用一些非信号安全函数,如 fprintfsnprintf。但是我需要用像写这样的信号安全函数来替换它。但是 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/

相关文章:

linux - Bash 从行中删除一个字符

从文件名计算字数统计程序中的字数

python - PyQT5 中的信号/槽不起作用,因为数组对于函数不可见

c - fprintf 没有将数据打印到文件中

有条件地更改 C 源文件中的 C 语句

c - 段错误 strcpy

Docker:如何将信号从一个正在运行的容器发送到另一个容器?

c - printf 字符数组段错误 C

linux - ARC Welder 扩展的下载大小

flutter - 是否有一个库可以在 flutter 应用中绘制音频波形