Существует ли библиотека c ++, которая обеспечивает функциональность для выполнения внешней программы и чтения ее результатов? - PullRequest
1 голос
/ 11 апреля 2010

По сути, я ищу что-то, что позволило бы мне скопировать следующий код Perl:

my $fh = new FileHandle;
$fh->open("foo |");
while (<$fh>) {
    # Do something with this line of data.
}

Это в контексте Linux, поэтому библиотека, специфичная для Windows, не поможет. Я знаю, как написать программу, которая делает fork / exec / dup2 и все эти базовые джазовые оболочки, но есть некоторые неловкие детали, касающиеся терминалов, с которыми мне не хочется возиться (и у меня нет копии «Расширенное программирование в среде UNIX» или аналогичный справочник), поэтому я надеюсь, что кто-то уже решил эту проблему.

Ответы [ 2 ]

5 голосов
/ 11 апреля 2010
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(int argc, char* argv[])
{
    char c;
    FILE* p;

    p = popen("echo hello, world!", "r");
    if( p == NULL ) {
        fprintf(stderr, "Failed to execute shell with \"echo hello, world!\"");
        exit(1);
    }
    while( (c = fgetc(p)) != EOF ) {
        fputc(toupper(c), stdout);
    }
    pclose(p);
    return EXIT_SUCCESS;
}
2 голосов
/ 11 апреля 2010

Может быть popen это ваше решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...