有时候我们想要在C++代码中使用shell命令,我们可以用system()函数
:
下面是一个案例:
bool getCpuId(std::string &cpuId) {
cpuId.c_str();
//因为我们要处理命令输出结果,所以我们把结果输出到一个文件中
const char *dmidecode_result = ".dmidecode_result.txt";
char command[512] = {0};
//如果是root用户
if (0 == getuid()) {
snprintf(command, sizeof(command), "dmidecode -t processor | grep ID > %s",
dmidecode_result);
} else {
//如果不是root用户,而我们想要执行sudo命令,可以使用下面的命令
snprintf(command, sizeof(command),
"echo '123456' | sudo -S dmidecode -t processor | grep ID > %s",
dmidecode_result);
}
if (0 == system(command)) {
parseCpuId(dmidecode_result, "ID:", cpuId);
}
unlink(dmidecode_result);
return (!cpuId.empty());
}