执行进程最简单的方法是什么,等待它完成,然后将其标准输出作为字符串返回?
有点像Perl中的支持者。
不寻找跨平台的东西。我只需要最快的VC ++解决方案。
有什么想法吗?
答案 0 :(得分:4)
WinAPI解决方案:
您必须使用重定向输入(STARTUPINFO结构中的hStdInput字段)和输出(hStdOutput)创建进程(请参阅CreateProcess)到您的管道(请参阅CreatePipe),然后只需从管道读取(请参阅ReadFile)。
答案 1 :(得分:2)
嗯.. 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 ++的优点包装它。