1

我想在 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");

现在,所需的输出应该(在我的机器上)是这样的:

[ OK ] Initializing...
[INFO] CPU name: Intel(R) Xeon(R) CPU X5365  
[INFO] CPU speed: 3.00GHz

但这不是它给我的。它给出了这个奇怪的结构:

[ OK ] Initializing...
     Intel(R) Xeon(R) CPU X5365  
[INFO] CPU name: 
 3.00GHz
[INFO] CPU speed:

有谁知道该怎么做?反正Tnx。

4

1 回答 1

6

您需要在调用之前刷新输出流system,否则可以缓冲打印输出的字符串。打印\n刷新(假设stdout是行缓冲,如果您正在写入终端,通常会出现这种情况),但打印没有该行的行不一定会刷新。

尝试添加:

fflush(stdout);

在你system打电话之前。

fflush<cstdio>。)

于 2012-10-07T09:27:18.583 回答