Получить вывод из libexpect

0

Я пытаюсь получить результат, созданный командой, введенной через libexpect, я не очень разбираюсь в стиле C, чтобы делать что-то, и я не уверен, как продолжить.

Проблема в том, что, кажется, это популярная программа для пользователей python, я могу найти только несколько базовых примеров использования libexpect в C/C++, и никто, похоже, не упоминает о выходе.

Пример программы:

// g++ t.cpp -lexpect -ltcl -o t
#include <iostream>
#include <tcl8.5/expect.h>

int main(){
    FILE *echo = exp_popen(const_cast<char *>("telnet google.com 80"));
    std::cout << char(fgetc(echo)) << std::endl;

    std::cout << std::string(80, '=') << std::endl;
    char c;
    do{
            c = fgetc(echo);
            std::cout << "'" << c << "'";
    }while(c != EOF);

    return 0;
}

Хотя это частично работает, он не получает первого символа.

Теги:
expect

1 ответ

0
Лучший ответ

На самом деле, SO показала ссылку на стороне сразу после того, как я опубликовал правильный ответ, я думаю, я не выглядел достаточно сложно:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <tcl8.5/expect.h>
#include <errno.h>

int main()
{
    char str[512];
    FILE *f = exp_popen("ssh user@mybox ls -lR");
    if (f==NULL)
    {
        printf("Failed (%s)\n", strerror(errno));
        return 1;
    }
    while(fgets(str, sizeof(str)-1, f))
    {
        printf("%s", str);
    }
    return 0;
}

(Взято из Как читать stdout из FILE *, созданного с помощью libexpect в C++ на Linux?)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню