HANDLE h = CreateFile( ... );
//...
int fd = _open_osfhandle( reinterpret_cast<intptr_t>(h), 0 );
_commit( fd );
// _close(); // Not required
根据MSDN
_close函数关闭与fd关联的文件。文件 描述符和底层OS文件句柄已关闭。因此,它是 如果文件最初打开,则无需调用CloseHandle 使用Win32函数CreateFile并转换为文件描述符 使用_open_osfhandle。
所以根据文档,如果我调用_close()
,基础文件HANDLE
(我的文件)也将关闭,这是我不想要的。
但是我不认为这回答了我如何处理_open_osfhandle
返回的文件描述符以及它会发生什么。如果我只是忽略文件描述符并等到文件稍后关闭,这样可以吗?文件清理(CloseHandle()
)也会破坏文件描述符吗?