1

情况是我的程序是通过system()or启动的CreateProcess()

现在,当该程序将数据输出到控制台时,是否可以做一些事情。我的意思是程序输出它。那不是等待结束,收集数据然后处理它,而是在这个外部程序调用控制台的那一刻,它想要打印的数据,然后获取该数据,处理它并在控制台上输出其他东西安慰。

4

3 回答 3

1

最简单的方法通常是使用_popen(your_program, "r");. 这将返回一个FILE *您可以读取的内容,并且它读取的内容将是孩子写入其标准输出的任何内容。当您阅读EOF该文件时,这意味着子进程已终止。这使得实时读取和处理孩子的输出变得相对容易。

于 2012-06-07T17:01:57.147 回答
0

在创建子进程之前调用 AllocConsole,或者使用 AttachConsole(ChildPID) 函数(在父进程中)。之后,您可以使用任何 ReadConsoleXXX 或 WriteConsoleXXX 函数。

于 2012-06-08T05:59:27.680 回答
0

在 Linux 上,创建一个命名管道:

system("mkfifo pipename")

然后在第一个程序中打开管道,并使用以下命令启动程序:

system("program > pipename")

我不确定如何在 Windows 上执行此操作。

于 2012-06-07T16:22:19.860 回答