使用管道 Win32 连续读取/写入数据
我正在尝试使用 WinAPI 在 Win32 中为命令行程序编写 GUI 程序(所以请不要使用 MFC)。在我当前的尝试中,我正在创建一个输入管道和一个输出管道来读取/写入数据。然而,当我尝试连续读取程序或在一次读取后简单地写入时,我的问题就出现了,因为我必须使用“CloseHandle();”的方式。有没有人可以推荐的解决这个问题的好方法?我需要在读取/写入子进程的整个过程中保持子进程打开。也许有比使用 CreatePipe(); 更好的方法吗?和 CreateProcess();要这样做吗?
问候,
丹尼斯·M.
I am trying to write a GUI program for a command line program in Win32 using WinAPI (so please no MFC). In my current attempt, I am creating an input pipe and an output pipe to read/write data. However, my problem comes in when I attempt to continuously read from a program or to simply write after a single read due to the way I have to "CloseHandle();"'s. Is there any good way around this that anyone can recommend? I need to keep the sub-process open the entire time I am reading from/writing to it. Is there perhaps a better way over using CreatePipe(); and CreateProcess(); to do this?
Regards,
Dennis M.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要使用异步I/O。
You need to use Asynchronous I/O.
我不确定我完全理解你的问题。
我假设您已经看过这篇 MSDN 文章 (http:// /msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx) 并有类似的代码吗?
我发现使用重叠的 I/O 和 I/O 完成端口来处理管道更容易,因此我编写了一个包装器来正确创建管道(http://www.lenholgate.com/blog/2008/02/process-management-using-jobs-on- windows.html)。
I'm not sure I completely understand your problem.
I assume you've seen this MSDN article (http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx) and have code similar to it?
I found it easier to use overlapped I/O and I/O completion ports to handle the pipes, so I wrote a wrapper to create the pipes correctly (http://www.lenholgate.com/blog/2008/02/process-management-using-jobs-on-windows.html).