How to get the number of CPUs in Linux using C?


Is there an API to get the number of CPUs available in Linux?
I mean, without using /proc/cpuinfo or any other sys-node file…

I’ve found this implementation using sched.h:

int GetCPUCount()
 cpu_set_t cs;
 sched_getaffinity(0, sizeof(cs), &cs);

 int count = 0;
 for (int i = 0; i < 64; i++)
  if (CPU_ISSET(i, &cs))
 return count;

But, isn’t there anything more higher level using common libraries?


#include <stdio.h>
#include <sys/sysinfo.h>

int main(int argc, char *argv[])
    printf("This system has %d processors configured and "
        "%d processors available.\n",
        get_nprocs_conf(), get_nprocs());
    return 0;

Answered By – Владимир Николайчук

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published