0

我正在用 C++ 编写一个时间关键型应用程序,我将数据写入日志,该日志在 Web 浏览器中不断显示和更新(我无法更改这一点,请不要推荐使用其他解决方案)。

目前,我每 100 毫秒执行一次这样的操作来转储数据(每次转储都必须重写整个文件):

ofstream log_file(log_path);
//Do some error handling
log_file << "Quite some data" << endl;
log_file.close();

问题是程序每隔几次调用就需要大约 20 毫秒来打开日志,这似乎会在某些系统上导致大量硬盘使用(我怀疑硬盘在每次重新打开过程中都会再次寻找文件)。

有没有办法让文件句柄一直保持打开状态,以便系统希望保留一些指向文件的指针,以最大限度地减少延迟和硬盘使用?如果需要,我也很乐意切换到不同的 Write-API。

4

1 回答 1

1

您可以将日志文件保存在内存文件系统中,例如/dev/shm. 这将避免访问磁盘,除非日志文件太大而无法放在那里。

于 2012-10-10T10:57:55.913 回答