【问题标题】:Continously Read/Write Data with Pipes Win32使用管道连续读取/写入数据 Win32
【发布时间】:2010-07-10 03:37:51
【问题描述】:

我正在尝试使用 WinAPI 为 Win32 中的命令行程序编写 GUI 程序(所以请不要使用 MFC)。在我目前的尝试中,我正在创建一个输入管道和一个输出管道来读取/写入数据。但是,当我尝试从程序中连续读取或在单次读取后简单地写入时,我的问题就出现了,因为我必须使用“CloseHandle();”的方式。有没有人可以推荐的好方法?我需要在读取/写入它的整个过程中保持子流程打开。使用 CreatePipe(); 是否有更好的方法?和 CreateProcess();这样做?

问候,
丹尼斯 M.

【问题讨论】:

  • 嗨丹尼斯你能发布一些代码,我们可以(希望)指出一些更正。您正在做的事情通常不会困难,但有时需要多个线程。

标签: c++ winapi pipe


【解决方案1】:

您需要使用Asynchronous I/O

【讨论】:

  • 这很好用,除非我仍然不能多次从管道中读取,否则程序会冻结。有什么想法吗?
  • @Dennis:为什么不呢?当进程写入管道时,您应该收到信号,完成后您应该取消管道信号,以便再次收到信号。您可以在 Reflector 中打开 .NET 框架上的 System.Diagnostics.Process 以查看它们是如何实现的。
【解决方案2】:

我不确定我是否完全理解您的问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多