Я пытаюсь получить вывод, созданный командой, введенной через 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;
}
Хотя это частично работает, он не может получить первый символ.
На самом деле, 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;
}
(Взято из Как прочитать стандартный вывод из ФАЙЛА *, созданного с помощью libexpect в C ++ в Linux?)
Других решений пока нет …