English 中文(简体)
重定向exe批处理文件的输出
原标题:
  • 时间:2008-09-24 10:48:56
  •  标签:

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

问题回答

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

[EDIT] I know how SciTE does that (you can take a look at the source: win32/SciTEWin.cxx, ExecuteOne function), I searched a slightly more generic way, found How to spawn console processes with redirected standard handles from Microsoft itself.
If you seach CreatePipe PeekNamedPipe CreateProcess keyword, for example, you might find other examples.

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

示例“Child.4-使用异步I/O从子进程读取”显示了如何将子进程的输出重定向到C++流(以及以后访问内容)。

示例“Child.4-使用异步I/O从子级读取”显示如何使用Boost.Process与Boost.Asio访问子级的异步I/O。

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

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





相关问题
热门标签