一個命令,以從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
我沒有輸出。輸出被忽略 –