【问题标题】:Read from an open file从打开的文件中读取
【发布时间】:2013-06-20 14:46:59
【问题描述】:

我正在开发一个加密静态数据的项目,然后将加密数据解密到一个临时文件中,以便将未加密的数据写入 XML 流。加密和解密工作,但我无法从文件中读取数据。我相信这是由于文件仍然处于打开状态,但我无法关闭文件,因为它在关闭时被删除。我想知道是否有办法从这个文件中读取?

作为最后的手段,我可​​以重写代码以仅使用大的加密缓冲区而不是文件,但我想弄清楚如何从打开的文件中读取数据。

编辑:我之前应该说过,我在 C++ 类中有解密逻辑,并且我使用 extern "C" 将我需要的函数移植到 C 中。进行解密的函数是在 C++ 中,它允许我从文件描述符中获取一个 HANDLE,然后使用 FlushFileBuffers(HANDLE) 来刷新缓冲区。

【问题讨论】:

  • 请给我们一些代码。

标签: c++ c


【解决方案1】:

输入和输出可以在 C 库级别和内核级别进行缓冲;在缓冲区被刷新之前,来自一个进程的写入不一定立即对另一个进程可见。如果您使用的是 C 库的标准 IO 功能,则可以在写入进程中使用fflush 以确保其输出可供读取进程使用。

【讨论】:

  • 是否有使用文件描述符的 fflush 版本?
  • 我没有看到操作系统标签,所以我猜:fsync() 或 fdatasync() 刷新文件描述符
  • 我编辑了 OP 以包含更多细节,我最终选择了 FlushFileBuffers,因为我短暂地处于 Visual C++ 领域
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 2019-11-08
  • 2014-05-30
  • 2011-05-11
  • 2019-07-11
  • 2016-09-21
相关资源
最近更新 更多