我正在尝试重定向子进程的输出并将其返回给父节点FILE*
。如何关闭一个已转换为FILE *的句柄?
我基本上遵循Creating a Child Process with Redirected Input and Output的代码示例。唯一的修改是,我包裹了整个事情的功能,做
return _fdopen(_open_osfhandle((intptr_t)g_hChildStd_OUT_Rd, _O_RDONLY), "rb");
的问题是,我要清理和fclose
抛出一个错误。在我做了_fdopen
之后,我是否应该关闭手柄?我该怎么清理这里?
“_open_osfhandle”的[文档](http://msdn.microsoft.com/en-us/library/bdts1c9x.aspx)指出:“*要关闭用'_open_osfhandle'打开的文件,请调用'_close '。底层句柄也通过调用'_close'来关闭,所以不需要在原句柄上调用Win32函数'CloseHandle'。*“ – ildjarn 2012-04-27 21:21:50