Windows:具有重定向输入和输出的子进程
我正在尝试使用重定向输入和输出创建子进程(如此处所述 –
http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx).
然而,在该代码中,程序在读取和写入之后(在WriteToPipe和ReadFromPipe中)关闭管道,因此实际上程序只读取文件,将其转储到子进程输入流上,然后读取子进程响应. 现在,我正在寻找的代码是我们不会关闭管道的代码,但是我们会不断发布请求并读取子进程响应(与仅发出1个请求相反). 我已尝试对上面发布的链接上给出的源代码进行了几处修改,但无论我尝试什么,程序总是在ReadFromPipe()函数中调用ReadFile()时挂起(它可能等待孩子退出 – 但是正如我所说,我希望得到孩子的回应,然后向其发送其他请求). 关于我如何克服这一点的任何想法? 更新: 任何人至少可以告诉我,使用带有RedirectStandardInput和RedirectStandardOutput的.NET Process类是一个不错的选择吗? 解决方法
有完全相同的问题,并通过使用PeekNamedPipe(根据MSDN也适用于匿名读取管道)解决它,以在每次调用ReadFile之前检查可用数据.这消除了我遇到的阻塞问题,并允许我的GetExitCodeProcess()看到进程退出并清理管道.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |