搜到的一些结果感觉不太严谨,所以自己写了一个,记录一下
主要用到popen和fgets函数;
着重需要注意获取输出时不要越界。
#include <iostream>
#include <cstring>
std::string excute_cmd(const char* cmd) {
FILE* fp = popen(cmd, "r");
if (nullptr == fp) {
return "";
}
char result[CMD_RESULT_MAX_LENGTH] = {0};
for (int i = 0; i < CMD_RESULT_MAX_LENGTH - 1 && fgets(result + i, CMD_RESULT_MAX_LENGTH - i, fp) != nullptr; i = strlen(result)) {
}
pclose(fp);
fp = nullptr;
return result;
}
int main() {
std::string res = excute_cmd("gcc --version");
std::cout << res << std::endl;
}