在我的控制台应用程序中,我使用CreateProcess方法创建了一个进程。 现在,此过程要么写入控制台“确定”或“不正常”。我如何拦截这些信息,以便我可以将控制台写入文件?
答案 0 :(得分:3)
CreatePipe
创建匿名管道。 有关详细信息,请参阅MSDN上的Creating a Child Process with Redirected Input and Output。
答案 1 :(得分:1)
管道难以正确使用,尤其是在Windows中。当你有简单的单行输出时,就像在这种情况下,只需将进程的标准输出重定向到一个临时文件并读取它。一种非常简单的重定向方法是让cmd.exe
通过其>
运算符完成工作。
听起来好像是在开发已启动的过程。
如果是这种情况,请考虑使用流程退出代码而不是输出,以获得是/否结果。
流程退出代码是main
的结果值。 (通常相同)值0
和EXIT_SUCCESS
表示成功,如“OK”,值EXIT_FAILURE
,加上Windows中E_FAIL
的值{{1} ,意思是失败,就像“不行”。在Windows中<windows.h>
(来自EXIT_SUCCESS
标题)始终为0,<stdlib.h>
通常为1.
检查流程退出代码比检查流程输出要简单得多,效率更高。
特别是,C ++标准库的EXIT_FAILURE
函数返回进程退出代码,并将命令传递给system
,因此不需要为此情况进行API级别的舞蹈。