2014-11-11 6 views
0

Я хотел бы проверить, является ли мой процессор AMD или INTEL в C и выполнять необходимые действия в соответствии с этим. Каков правильный и эффективный способ получить его в C?Каков правильный способ получить имя поставщика процессора в c?

Должен ли я запускать систему (команда linux) или есть какой-либо другой хороший способ ее получить.

+1

Соответствующий вопрос: HTTP: // StackOverflow .com/q/14266772/656243 –

+0

Также уместно: http://stackoverflow.com/q/6491566/656243 –

ответ

1

Поскольку Вы не указали ОС вы работаете на здесь, как вы это делаете для OSX

#import <sys/sysctl.h> 

Я думаю, что в с это же библиотека просто вызывается #include Чтобы использовать uint64_t тип значение вы должны включать в себя <stdint.h>

#include <sys/sysctl.h> 

len=0; 
uint64_t freq = 0; // 

size_t size = sizeof(freq); 
sysctlbyname("machdep.cpu.brand_string", NULL, &len, NULL, 0); 
if(len) 
{ 
    sysctlbyname("machdep.cpu.brand_string", &freq, &len, NULL, 0); 
} 

ответ вы получите, будут храниться в freq

Чтобы узнать имя sysctlbyname вы можете запустить sysctl -a в терминале

Я думаю, что sysctl также совместим с Linux, но я никогда не протестировать его на Linux машине

http://www.unix.com/man-page/freebsd/3/sysctlbyname/

+1

FYI, OP вызвал linux в последнем предложении. Это не было окончательным, но это хорошая догадка. –

+0

@LynnCrumbling Да, вы правы, но osx также имеет некоторые «команды linux», также я уверен, что он будет работать и под Linux-машиной, так как он использует библиотеку GNU. –

+1

. Я думал, что вопрос просил процессор имя поставщика, а не размер кеша L3. И я должен отметить, что '* sizeof (char)' никогда не требуется, потому что 'sizeof (char)' по определению 1. Всегда. –

Смежные вопросы