从另一个程序执行和捕获一个程序
在 C 语言的 win32 编程中:
在另一个 win32 程序中执行 win32 控制台程序并使开始执行的程序捕获输出的最佳方法是什么? 目前我使程序将输出重定向到文件,但我确信我必须能够打开某种管道?
In win32 programming in C:
Whats the best way to execute a win32 console program within another win32 program, and have the program that started the execution capture the output? At the moment I made the program redirect output to a file, but I am sure I must be able to open some sort of pipe?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
CreateProcess
Win32 API 启动子进程。向其传递
STARTUPINFO
< /a> 结构,其中hStdInput
、hStdOutput
和hStdError
句柄设置为您打开的文件句柄(真实文件或内存映射文件都应该有效)。 您不需要指定所有三个,您可以仅重定向您真正需要的; 最常见的情况是hStdOutput
。如果您想与子进程通信(通过
hStdInput
),则需要通过调用WaitForInputIdle
。Use the
CreateProcess
Win32 API to start the child process.Pass to it a
STARTUPINFO
structure withhStdInput
,hStdOutput
andhStdError
handles set to file handles you opened (either real files or memory mapped files should work). You don't need to specify all three, you can redirect only the ones you really need; most common case ishStdOutput
.If you want to communicate with the child process (through
hStdInput
), you need to wait for it to initialize by callingWaitForInputIdle
.