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 に答える