我正在开发一个加密静态数据的项目,然后将加密数据解密成临时文件,以便将未加密的数据写入XML流。加密和解密工作,但我无法从文件中读取数据。我相信这是由于文件仍然打开,但我无法关闭该文件,因为它在关闭时被删除。我想知道是否有办法从这个文件中读取?
作为最后的手段,我可以重写代码只使用大型加密缓冲区而不是文件,但我想弄清楚如何从打开文件中读取数据。
编辑:我之前应该说过,我在C ++类中有解密逻辑,并且我使用extern“C”将所需的函数移植到C中。执行解密的函数是用C ++编写的,它允许我从文件描述符中获取一个HANDLE,然后使用FlushFileBuffers(HANDLE)来刷新缓冲区。答案 0 :(得分:1)
输入和输出可以在C库级别和内核级别进行缓冲;在刷新缓冲区之前,一个进程的写入不一定立即对另一个进程可见。如果您正在使用C库的标准IO功能,则可以在编写器进程中使用fflush
以确保其输出可供读取器进程使用。