2010-10-07 3 views
0

В unix я знаю подпрограмму: между fork() и exec() в дочернем я закрываю все, кроме stdin/out/err, так что все открытые порты или файлы не передаются в программу, которую я хочу запустить.c/C++, mfc: Не передавать открытые файлы/дескрипторы порожденного процесса

Но как это сделать в окнах? В моем случае я реализую DLL на C/C++, и мне нужно закрыть оба файла, которые я открыл (косвенно через некоторые объекты), и сокеты, открытые приложением, загружающим DLL, чтобы эти открытые дескрипторы файлов не были передан в приложение, которое я несу. Приложение не передает эти дескрипторы в DLL, так как моему коду не нужны эти ...

До сих пор код просто вызывал _spawnl (_P_NOWAIT, «foo.exe», «foo.exe», arg1 "," arg2 ", NULL); Visual Studio 2008, если это имеет значение.

Благодарим за помощь.

ответ

0

hmm - извините, что немного угадываешь здесь, но уверены ли вы, что spawnl в Windows проходит открытые дескрипторы файлов?

Если это так, может быть, вы хотите посмотреть на CreateProcess, и STARTUPINFO - они позволяют более тонкий контроль над тем, что получает передается/унаследовали к новому процессу

+0

Использование CreateProcess вместо spawnl() сделал трюк. Thaks! –

Смежные вопросы