UNIXでは、ルーチンを知っています。子のfork()とexec()の間で、stdin / out / errを除くすべてを閉じて、開いているすべてのポートまたはファイルが実行したいプログラムに渡されないようにします。
しかし、Windowsでこれを行うにはどうすればよいですか?私の場合、C / C ++でDLLを実装しており、(いくつかのオブジェクトを介して間接的に)開いたいくつかのファイルと、dllをロードしたアプリケーションによって開かれたソケットの両方を閉じる必要があります。これにより、これらの開いたファイルハンドルは閉じられません。スポーンしているアプリケーションに渡されます。私のコードはそれらを必要としないはずなので、アプリはそれらのハンドルをDLLに渡しません...
これまでのところ、コードは単に_spawnl(_P_NOWAIT、 "foo.exe"、 "foo.exe"、 "arg1"、 "arg2"、NULL);を呼び出しています。それが重要な場合は、VisualStudio2008。
ご協力いただきありがとうございます。