【问题标题】:Redirect the output of the exe batch file重定向exe批处理文件的输出
【发布时间】:2010-09-12 16:35:13
【问题描述】:

我想执行某个批处理文件并将其控制台输出重定向到 Visual c++ 中的文本控件,或者在显示日志/回显的同时重定向控制台输出。

【问题讨论】:

    标签: c++ visual-c++ batch-file


    【解决方案1】:

    基本上,您必须让运行进程写入管道,并读取该管道的输出。

    [编辑] 我知道 SciTE 是如何做到这一点的(你可以看看源代码:win32/SciTEWin.cxx,ExecuteOne 函数),我搜索了一个稍微通用的方法,从微软本身找到了How to spawn console processes with redirected standard handles
    例如,如果您搜索 CreatePipe PeekNamedPipe CreateProcess 关键字,您可能会找到其他示例。

    【讨论】:

      【解决方案2】:

      另一种选择是使用Boost.Process(Boost.Process 还不是官方的 Boost C++ 库。它必须单独下载和安装)

      示例“Child.4 - Reading from a child using asynchronous I/O”展示了如何将子进程的输出重定向到 C++ 流(然后访问内容)。

      示例“Child.4 - Reading from a child using asynchronous I/O”展示了如何将 Boost.Process 与 Boost.Asio 一起使用来访问子 I/O异步

      这种方法的优点是Boost.Process支持Windows API和POSIX API。

      【讨论】:

        【解决方案3】:

        如果优雅不是优先事项,那么一个非常简单的解决方案可能是将输出重定向到文件,然后读入文件内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-07
          • 2012-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多