我想在 Linux 上从 C++ 执行
tcptraceroute
命令。
我找到了一个问题/答案(见下文)。但是,它只返回前几行:
Selected device epo3, address 192.168.1.2, port 45000 for outgoing packets
Tracing the path to 199.36.213.11 on TCP port 80 (http), 30 hops max
tcptraceroute <address>
在进行网络跳跃时在一段时间内写入标准输出。
我认为这是可能的,因为我在 Python 中使用 AWS Boto3 做了类似的事情
send_command()
.
我试过的答案:
https://stackoverflow.com/a/478960
std::string exec(const char* cmd) {
char buffer[128];
std::string result = "";
FILE* pipe = popen(cmd, "r");
if (!pipe) throw std::runtime_error("popen() failed!");
try {
while (fgets(buffer, sizeof buffer, pipe) != NULL) {
result += buffer;
}
} catch (...) {
pclose(pipe);
throw;
}
pclose(pipe);
return result;
}