我们在开发软件时,常常会用到控制台下的程序,比如make,link,ftp等等。除此之外,还有一些开源的软件都是在控制台下使用的,这样,如果我们想方便的在Windows程序中直接调用这些进程和他们进行互动,那么就需要获取它们的标准输入输出。
在Windows下获取这种输出最常用的方法是通过建立子进程和管道。
例子如下:
首先,我们先创建一个用来测试的console程序。
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("hello world!/n");
return 0;
}
编译为可执行文件hello.exe
接下来,可以通过如下示例代码对其标准输出进行读出。
1.首先创立子进程,并创立管道附加到子进程上(注意管道流向)
2.读出子进程的标准输出(直接使用ReadFile读取管道),存入缓冲
3.把缓冲打印到屏幕上
我用的是C++的编译器,C编译器可能会报错。
#include <stdio.h>
#include <windows.h>
typedef struct
{
HANDLE hRead; /* stdout */
HANDLE hWrite; /* stdin */
HANDLE hError;