Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > как получить стандартный вывод программы в строку?


Автор: asdf 27.9.2005, 21:04
Код

string foo(string commandLine)
{
    // ??
}

Автор: Romikgy 28.9.2005, 08:24
Ниче не понятно , по конкретнее можно?

Автор: azesmcar 28.9.2005, 08:31
В линуксе есть функция int dup2(int oldfd, int newfd), перенаправляет поток указанный первым параметром в поток указанный вторым...делаешь open, перенаправляешь поток из stdout -а в десктиптор возвращенный функцией open...

В windows -e должно быть что то наподобие. У меня MSDN -а нету, сам посмотреть не могу.
Добавлено @ 08:33
Это если именно для твоей программы, если хочешь вызвать другую то popen (опять же в линуксе)
Добавлено @ 08:36
Во, откопал в интернете..
Код

#include <stdio.h>
#include <stdlib.h>

void main( void )
{

   char   psBuffer[128];
   FILE   *chkdsk;

        /* 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( (chkdsk = _popen( "dir *.c /on /p", "rt" )) == NULL )
      exit( 1 );

   /* Read pipe until end of file. End of file indicates that 
    * CHKDSK closed its standard out (probably meaning it 
         * terminated).
    */
   while( !feof( chkdsk ) )
   {
      if( fgets( psBuffer, 128, chkdsk ) != NULL )
         printf( psBuffer );
   }

   /* Close pipe and print return value of CHKDSK. */
   printf( "\nProcess returned %d\n", _pclose( chkdsk ) );
}

Автор: chaos 28.9.2005, 08:37
вот посиотри подобное уже обсуждалось
http://forum.vingrad.ru/index.php?showtopic=64416&view=findpost&p=517216
Добавлено @ 08:37
если конечно тебе для линуха
Добавлено @ 08:38
тоже самое сожно реализовать для винды!!!

Автор: asdf 28.9.2005, 10:20
работает, благодорю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)