0

在 unix 中,我知道例程:在子进程中的 fork() 和 exec() 之间,我关闭了除 stdin/out/err 之外的所有内容,因此所有打开的端口或文件都不会传递给我要运行的程序。

但是我如何在 Windows 中做到这一点?在我的情况下,我在 C/C++ 中实现一个 DLL,我需要关闭我打开的一些文件(间接通过一些对象)和加载 dll 的应用程序打开的套接字,这样这些打开的文件句柄就不会传递给我正在生成的应用程序。该应用程序不会将这些句柄传递给 DLL,因为我的代码不需要那些...

到目前为止,代码只是调用了 _spawnl(_P_NOWAIT, "foo.exe", "foo.exe", "arg1", "arg2",NULL); Visual Studio 2008 如果这很重要。

谢谢你的帮助。

4

1 回答 1

0

嗯 - 很抱歉在这里猜测一下,但你确定 Windows 中的 spawnl 会传递打开的文件句柄吗?

如果是这样,也许您想查看 CreateProcess 和 StartupInfo - 这些允许更好地控制传递/继承给新进程的内容

于 2010-10-08T03:56:03.193 回答