如何解决C++:文件节拍进程运行时使用 FILE 库写入文件的问题
我有一个使用 FILE 库写入文件的代码,并且通常有效,但我发现了一个不起作用的情况:当代码与 filebeat 进程同时运行时。
我不知道这个问题的原因,因为我的 C++ 项目不支持调试模式。
我正在参与一个别人开发的开源项目,我还不熟悉这个项目。
这是我的 C++ 代码:
FILE *fptr;
fptr = fopen("log_path.c_str()","w");
if (fptr == NULL)
{
printf("Error!");
exit(1);
}
fprintf(fptr,"%s",log.c_str());
fclose(fptr);
请给我一些建议。
解决方法
当您尝试写入文件时,您的代码出现管道中断异常。
当filebeat软件正在读取日志文件时,当c++代码尝试写入日志文件时,会发生此异常。
所以,我推荐使用这个 C++ 代码:
#include <fstream>
#include <iostream>
logFilePath = "this is path string of log file";
log = "this is log string";
ofstream output(logFilePath,ios::app);
output << log << endl;
output.close();
这段使用offstream库的代码将解决管道损坏异常。
如果你使用这个c++代码,它可以在文件写入过程中使用字符串类型,所以不需要通过c_str()进行类型转换。
我检查过这段代码可以与 File beat 7.10.0 一起使用。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。