情况是我的程序是通过system()
或CreateProcess()
启动的。
现在,是否有可能在程序将数据输出到控制台时执行操作。我的意思是当程序输出它。这不是等待结束,收集数据然后处理它,但只是在这个外部程序调用控制台时它想要打印的数据,然后获取该数据,处理它并输出其他内容控制台。
答案 0 :(得分:1)
最简单的方法通常是使用_popen(your_program, "r");
启动程序。这将返回一个你可以读取的FILE *
,它读取的内容将是孩子写入其标准输出的内容。当您在该文件上阅读EOF
时,表示子进程已终止。这样可以相对容易地实时读取和处理来自孩子的输出。
答案 1 :(得分:0)
在Linux上,创建一个命名管道:
system("mkfifo pipename")
然后在第一个程序中打开管道,并使用以下命令启动程序:
system("program > pipename")
我不确定如何在Windows上执行此操作。
答案 2 :(得分:0)
在创建子进程之前调用AllocConsole,或使用AttachConsole(ChildPID)函数(在父进程中)。 之后,您可以使用任何ReadConsoleXXX或WriteConsoleXXX函数。