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++ ではない) で書かれています。