一个命令,以从C++在Linux中,我纯粹使用CPU信息:运行从C++
如果(!系统( “猫的/ proc/cpuinfo中”))清点< < “错误” < < ENDL;
UPDATE:问题是,我没有得到任何出把
一个命令,以从C++在Linux中,我纯粹使用CPU信息:运行从C++
如果(!系统( “猫的/ proc/cpuinfo中”))清点< < “错误” < < ENDL;
UPDATE:问题是,我没有得到任何出把
它告诉你,system
返回一个值,你不检查,所以(在这种情况下),如果system
失败了,你赢了不知道。
该函数返回一个值,指示调用是否成功。
你的程序忽略了这个值,这可能导致潜在的问题。
这就是为什么你会得到编译器警告。
假设你想获得有关CPU编程Linux上的信息(而不是仅仅显示标准输出终端上/proc/cpuinfo
,像您的来电system
一样),你应该更好地阅读像例如文件/proc/cpuinfo
ifstream fcp("/proc/cpuinfo");
std::string lin;
while (!fcp.eof()) {
lin = fcp.getline();
// parse appropriately the file fcp, e.g.
if (lin.find("vendor_id") >= 0)
// do something useful
上述代码片段不完整。您必须完成它才能从/proc/cpuinfo
中提取您真正想要的信息。
当然,你可以阅读一些其他方式/proc/cpuinfo
(如fopen
,fgets
,sscanf
点菜C)......如果你真的想读一些命令的输出(在你的情况下,它是无用的)考虑popen
只需拨打uname(2)系统调用(它比/proc/cpuinfo
提供的信息要少得多),您可能很高兴。
谷歌搜索CPU频率或cpufrequtils给this
谢谢!至少有一个人读我的第一个问题,我说“我没有得到任何信息”。尽管如此,我并不真正了解你的意思。我只想看看所有的信息。我能做什么?为什么我的代码不显示任何内容? –
你想要什么信息来自'/ proc/cpuinfo'?如果你想向用户显示所有'/ proc/cpuinfo',只需按照我的建议读取该文件并显示它的每一行,例如在'lin = fcp.getline();'语句之后加'std :: out << lin << std :: endl;'。 –
运行时的CPU速度 –
这是一个编译器警告,告诉您的代码可能不是你意写。 C++中的system
函数返回int
的值,通常为,其中包含您使用system
运行的命令的状态代码。
在这种情况下,如果该数字不是0(即if(system("cat /proc/cpuinfo") != 0)
),则可能需要错误处理。
Linux有一个独特的开放函数,称为popen
,它允许您挂接到终端命令的标准输出。
您可以使用下面的代码从一个终端命令来读取任何输出:
FILE *pF = popen(aCmd, "r");
if(!pF)
{
return "ERROR";
}
char cChar = '\0';
std::string rtnStr = "";
while(!feof(pF))
{
cChar = fgetc(pF);
if(cChar == '\n')
{
break;
}
rtnStr += cChar;
}
并且使用命令cat /proc/cpuinfo
的CPU信息。您还可以添加| grep
,然后添加诸如“MHz”,“model”或“cores”之类的内容以获取具体信息。
...和十亿美元的问题是? –
什么部分的消息你不明白? – SLaks
我没有输出。输出被忽略 –