gpt4 book ai didi

c++ - 从 libexpect 获取输出

转载 作者:行者123 更新时间:2023-11-30 17:36:48 25 4
gpt4 key购买 nike

我正在尝试获取通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com