c/c++,mfc:不将打开的文件/句柄传递给生成的进程
Posted
技术标签:
【中文标题】c/c++,mfc:不将打开的文件/句柄传递给生成的进程【英文标题】:c/c++, mfc: Not passing open files / handles to a spawned process 【发布时间】:2010-10-07 09:48:28 【问题描述】:在 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,如果这很重要。
感谢您的帮助。
【问题讨论】:
【参考方案1】:嗯 - 很抱歉在这里猜了一点,但你确定 Windows 中的 spawnl 会传递打开的文件句柄吗?
如果是这样,也许您想查看 CreateProcess 和 StartupInfo - 这些可以更好地控制传递/继承给新进程的内容
【讨论】:
使用 CreateProcess 而不是 spawnl() 成功了。谢谢!以上是关于c/c++,mfc:不将打开的文件/句柄传递给生成的进程的主要内容,如果未能解决你的问题,请参考以下文章