【问题标题】:Keeping a latent file-handle保留一个潜在的文件句柄
【发布时间】:2012-10-10 10:49:54
【问题描述】:

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

目前我每 100 毫秒做一次这样的事情来转储数据(整个文件必须在每次转储时重写):

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

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

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

【问题讨论】:

    标签: c++ windows file-io ofstream


    【解决方案1】:

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

    【讨论】:

    • 也许我应该说它是一个Windows应用程序。
    • 这个想法还是不错的,我环顾四周,找到了一种适用于 Windows 的方法,所以这仍然回答了我的问题。
    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多