Jer*_*ers 1 c++ linux cpu printf system
我希望在Linux上用C++获取CPU的名称和时钟速度.但到目前为止,它对我来说效果不佳.现在我正在使用这段代码:
printf("\033[1;32m[ OK ]\033[0m Initializing...\n");
printf("\033[1m[INFO]\033[0m CPU name: ");
system("grep -i --color 'model name' /proc/cpuinfo | uniq | sed -e 's/model name//' | sed -e 's/: //' | sed -e 's/ //' | sed -e 's/@.*//'");
printf("\n");
printf("\033[1m[INFO]\033[0m CPU speed: ");
system("grep -i --color 'model name' /proc/cpuinfo | uniq | sed -e 's/.*@//'");
printf("\n");
Run Code Online (Sandbox Code Playgroud)
现在,所需的输出应该是(在我的机器上)这样的东西:
[ OK ] Initializing...
[INFO] CPU name: Intel(R) Xeon(R) CPU X5365
[INFO] CPU speed: 3.00GHz
Run Code Online (Sandbox Code Playgroud)
但这不是它给我的东西.它给出了这种奇怪的结构:
[ OK ] Initializing...
Intel(R) Xeon(R) CPU X5365
[INFO] CPU name:
3.00GHz
[INFO] CPU speed:
Run Code Online (Sandbox Code Playgroud)
有谁知道该怎么办?无论如何,Tnx.
您需要在调用之前刷新输出流system
,否则可以缓冲打印出的字符串.打印\n
刷新(假设stdout
是行缓冲,如果您正在写入终端,通常就是这种情况),但打印不带刷新的行不一定要刷新.
尝试添加:
fflush(stdout);
Run Code Online (Sandbox Code Playgroud)
在你的system
电话之前.
(fflush
在<cstdio>
.)