Я хочу получить имя процессора и тактовую частоту, в C ++ на Linux. Но пока что это не очень хорошо для меня. Прямо сейчас я использую этот кусок кода:
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 в любом случае.
Вам нужно очистить выходной поток перед вызовом system
в противном случае распечатанная строка может быть помещена в буфер. Печать \n
приливы (при условии stdout
является буферизованной строкой, что обычно происходит, если вы пишете в терминал), но печать строки без нее не обязательно сбрасывается.
Попробуйте добавить:
fflush(stdout);
до вашего system
звонки.
(fflush
в <cstdio>
.)
Других решений пока нет …