在 Windows (MinGW) 中,我的程序从调用进程继承了不需要的句柄。
该过程不需要打开这些文件,但是因为它存在于父级的生命周期之外,所以我遇到了文件保持打开状态的常见问题。
在 Linux 上,我解决了这样的问题:
// Close all file descriptors
// It's hard to figure out how many are open, but the first 1000 should do
int fd;
for (fd = 0; fd < 1000; fd++)
close (fd);
这似乎不适用于 Windows。
如何确定哪些文件句柄已被继承?我怎样才能关闭它们?
该项目使用 MinGW 和 Windows 的 Unix 兼容性 API 用 C(非 C++)编写。