什么是最简单的方法来执行一个进程,等待它完成,然后返回它的标准输出作为一个string?
有点像在Perl中的backtics。
不寻找一个跨平台的东西。 我只需要最快的VC ++解决scheme。
有任何想法吗?
WinAPI解决方案:
你必须使用重定向输入(在STARTUPINFO结构中的hStdInput字段)创建进程(参见CreateProcess),并输出(hStdOutput)到你的管道(参见CreatePipe),然后从管道中读取(请参阅ReadFile)。
嗯.. MSDN有这个例子:
int main( void ) { char psBuffer[128]; FILE *pPipe; /* Run DIR so that it writes its output to a pipe. Open this * pipe with read text attribute so that we can read it * like a text file. */ if( (pPipe = _popen( "dir *.c /on /p", "rt" )) == NULL ) exit( 1 ); /* Read pipe until end of file, or an error occurs. */ while(fgets(psBuffer, 128, pPipe)) { printf(psBuffer); } /* Close pipe and print return value of pPipe. */ if (feof( pPipe)) { printf( "\nProcess returned %d\n", _pclose( pPipe ) ); } else { printf( "Error: Failed to read the pipe to the end.\n"); } }
看起来很简单。 只需要用C ++善良包装它。