How to check CPU name, model, speed on Windows/Linux C?

nullpointer picture nullpointer · Sep 3, 2013 · Viewed 13.8k times · Source

I would like to get some infos with C about hardware:

  1. how many CPU's I have
  2. how many cores have each of them
  3. how many logical cores have every core in every CPU
  4. CPU name + model
  5. CPU speed + frequency
  6. CPU architecture (x86, x64)

I know that on Linux-like OS I can parse /proc/cpuinfo but since its not an ordinary file, I think its unsafe. Saw this answer on SO but it doesnt give me EVERY info I need. Should I call cat /proc/cpuinfo > file.txt and then parse file.txt? I know about cpuid.h (Im using GCC) but ca't find any doc about this header (anyway - is it a good idea to use it?)

Answer

For Windows, you'll want the GetSystemInfo function; Microsoft has an example. On Linux, /proc/cpuinfo is perfectly "safe", whatever that means, but there's already an answer to this question.