gpt4 book ai didi

c - 在信号处理程序上调用 fprintf() 是否安全?

转载 作者:行者123 更新时间:2023-12-03 22:10:08 25 4
gpt4 key购买 nike

在我的程序中,我有这样的事情

#include "mylib.h"
void signalsHandler(int signum){
switch(signum){
case SIGUSR1:{
//open file.txt with write(O_CREAT | O_APPEND)
//call the function that use fprintf() and write on file.txt

}
default: {
abort();
}
}
}

主要是
struct sigaction s;
memset(&s,0,sizeof(s));
s.sa_handler=signalsHandler;
s.sa_flags=SA_RESTART;
sigaction(SIGUSR1,&s,NULL);

在 mylib.h 上调用使用 fprintf() 写入文件的函数是否安全?根据 here我只能打电话写

最佳答案

fprintf不是 可以安全地调用信号处理程序,部分原因在于 FILE 的缓冲功能对象。

您应该做的是在信号处理程序中设置一个全局标志,然后在代码中的其他地方检查该标志并采取相应的行动。

关于c - 在信号处理程序上调用 fprintf() 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54887273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com