我试图获取通过libexpect输入的命令产生的输出,我对C语言的处理方式不是很熟练,而且我不确定该如何进行。
问题是,尽管这似乎是一个受python用户欢迎的程序,但我只能找到一些在C / C ++中使用libexpect的基本示例,而且似乎都没有提到获得输出。
示例程序:
// 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;
}
(摘自How to read stdout from a FILE* created with libexpect in C++ on linux?)
关于c++ - 从libexpect获取输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22571947/