微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++:文件节拍进程运行时使用 FILE 库写入文件的问题

如何解决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 举报,一经查实,本站将立刻删除。