gpt4 book ai didi

c++ - 在 "fopen()"打开并正在使用的情况下,用文本编辑器打开一个 txt 文件?

转载 作者:行者123 更新时间:2023-11-28 06:26:27 24 4
gpt4 key购买 nike

我的程序的记录器。我在另一个程序中看到,在程序仍在使用文件时,可以通过某种方式打开和读取文件。似乎它只是为我打开一个拷贝并继续在后台登录。我也需要这种日志系统。但是,如果我使用 fopen(),如果 Programm 已经用 fclose() 关闭了它,我只能用我的文本编辑器打开和读取文件;这种方法行得通,但我认为这是一个非常糟糕的解决方案,而且速度也很慢……在每个日志上打开和关闭文件:S有人知道所需的日志系统是如何工作的吗?

附言我在 Windows 8.1 上使用 VisualStudio 2013

抱歉我的英语不好:S

最佳答案

有两个不同的问题。

首先是写日志。在 Windows 系统中,缓冲将导致数据实际写入磁盘:

  • 如果您关闭文件
  • 当您有相当数量的新数据时(不确定在几 ko 和几 Mo 之间)
  • 如果你明确冲水

除非你有高吞吐量,否则我建议至少在每次写入后刷新(如果不关闭)以避免在程序崩溃时丢失日志。它还允许您实时读取日志文件。

其次是阅读。例如,众所周知,Vim 能够监控可被外部进程修改的文件。它将打开一个弹出窗口,说明该文件已被修改并提供重新加载它。我不知道记事本在相同条件下的作用。但是:

  • 除非第一个问题已经解决,否则它没有任何意义
  • 效率不是很高,因为您每次都会重新加载整个文件

恕我直言,您最好编写一个模仿 Linux tail -f 的自定义阅读器:

  • 读取(并显示)直到文件结束
  • 反复读取(读取失败后短暂休眠)以处理新添加的数据

关于c++ - 在 "fopen()"打开并正在使用的情况下,用文本编辑器打开一个 txt 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28456990/

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