1

执行进程,等待它完成,然后将其标准输出作为字符串返回的最简单方法是什么?

有点像 Perl 中的 backtics。

不是在寻找跨平台的东西。我只需要最快的 VC++ 解决方案。

有任何想法吗?

4

2 回答 2

4

WinAPI 解决方案:

您必须使用重定向输入(STARTUPINFO 结构中的 hStdInput 字段)和输出(hStdOutput)到您的管道(参见 CreatePipe)创建进程(参见 CreateProcess),然后从管道中读取(参见 ReadFile)。

于 2009-07-26T12:27:18.980 回答
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++ 的优点包装它。

于 2009-07-26T12:31:41.740 回答