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

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


#include <unistd.h>long number_of_processors = sysconf(_SC_NPROCESSORS_ONLN);


#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;}

https://linux.die.net/man/3/get_nprocs


This code (drawn from here) should work on both windows and *NIX platforms.

#ifdef _WIN32#define WIN32_LEAN_AND_MEAN#include <windows.h>#else#include <unistd.h>#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>int main() {  long nprocs = -1;  long nprocs_max = -1;#ifdef _WIN32#ifndef _SC_NPROCESSORS_ONLNSYSTEM_INFO info;GetSystemInfo(&info);#define sysconf(a) info.dwNumberOfProcessors#define _SC_NPROCESSORS_ONLN#endif#endif#ifdef _SC_NPROCESSORS_ONLN  nprocs = sysconf(_SC_NPROCESSORS_ONLN);  if (nprocs < 1)  {    fprintf(stderr, "Could not determine number of CPUs online:\n%s\n", strerror (errno));    exit (EXIT_FAILURE);  }  nprocs_max = sysconf(_SC_NPROCESSORS_CONF);  if (nprocs_max < 1)  {    fprintf(stderr, "Could not determine number of CPUs configured:\n%s\n", strerror (errno));    exit (EXIT_FAILURE);  }  printf ("%ld of %ld processors online\n",nprocs, nprocs_max);  exit (EXIT_SUCCESS);#else  fprintf(stderr, "Could not determine number of CPUs");  exit (EXIT_FAILURE);#endif}