将子进程的std句柄重定向到windows

时间:2015-08-06 13:28:39

标签: windows sockets io-redirection

我已经搜遍了整个网络,并没有找到合适的答案。 我正在修复为Windows Server 2003或更早版本编写的遗留代码。在代码中的某一点,主程序接受来自服务器套接字的连接,在接受的套接字上运行DuplicateHandle,并将它们设置为它使用CreateProcess调用的子进程的in,out和err句柄(子进程是一个外部程序,如cmd.exe)(CreateProcess的一个参数接受std句柄结构)。

此代码在较新版本的Windows上不再起作用(Server 2008及以上版本是我现在使用的版本),Microsoft决定不允许以这种方式复制套接字,并建议使用WSADuplicateSocket。这里的问题是这个函数需要子进程的进程id,但是在我上面提到的序列中,只有在句柄被复制之后才创建子进程。我可以将子进程创建为暂停,但我不确定在创建进程后我是否可以替换std句柄。

有没有推荐的方法来做到这一点?

由于

0 个答案:

没有答案