使用管道连续读/写数据Win32

问题描述:

我正在尝试在Win32中使用WinAPI编写一个用于命令行程序的GUI程序(所以请不要使用MFC)。在我目前的尝试中,我正在创建一个输入管道和一个输出管道来读取/写入数据。然而,当我试图从程序中不断读取或者在单次读取后简单写入时,由于我必须“CloseHandle();”的方式,我的问题才出现。有没有什么好的解决方法,任何人都可以推荐?我需要保持子流程在我读取/写入的整个过程中保持打开状态。是否有更好的方法来使用CreatePipe();和CreateProcess();去做这个?使用管道连续读/写数据Win32

问候,
丹尼斯M.

+0

嗨丹尼斯 你可以发布一些代码,我们可以(希望)指出一些更正。你在做什么通常不会太难,但有时需要多个线程。 – 2010-07-10 04:52:43

您需要使用Asynchronous I/O

+0

这样做效果很好,但我仍然不能从管道读取多次,否则程序会冻结。有关于此的任何想法? – RageD 2010-07-10 04:32:57

+0

@丹尼斯:为什么不呢?当进程写入管道时,应该发出信号,完成后,您应该取消信号,以便再次发出信号。您可以在Reflector的.NET框架中打开System.Diagnostics.Process,看看它们在那里如何实现。 – 2010-07-10 04:50:17

我不知道我完全理解你的问题。

我假设你已经看过这篇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)。