【发布时间】:2010-10-10 06:48:03
【问题描述】:
在 Win32 中用 C 编程:
在另一个 win32 程序中执行 win32 控制台程序的最佳方法是什么,并让开始执行的程序捕获输出?目前我让程序将输出重定向到一个文件,但我确定我必须能够打开某种管道?
【问题讨论】:
标签: c windows winapi console stdout
在 Win32 中用 C 编程:
在另一个 win32 程序中执行 win32 控制台程序的最佳方法是什么,并让开始执行的程序捕获输出?目前我让程序将输出重定向到一个文件,但我确定我必须能够打开某种管道?
【问题讨论】:
标签: c windows winapi console stdout
使用CreateProcess Win32 API 启动子进程。
将STARTUPINFO 结构传递给它,其中hStdInput、hStdOutput 和hStdError 句柄设置为您打开的文件句柄(真实文件或内存映射文件都可以使用)。您不需要指定所有三个,您可以只重定向您真正需要的那些;最常见的情况是hStdOutput。
如果你想和子进程通信(通过hStdInput),你需要通过调用WaitForInputIdle等待它初始化。
【讨论】: