লিনাক্সে এটি ব্যবহার করা নিরাপদ নাও হতে পারে _SC_NPROCESSORS_ONLN
কারণ এটি পসিক্স স্ট্যান্ডার্ডের অংশ নয় এবং সিসকনফ ম্যানুয়াল যতটা বলেছে। সুতরাং একটি সম্ভাবনা রয়েছে যা _SC_NPROCESSORS_ONLN
উপস্থিত নাও থাকতে পারে:
These values also exist, but may not be standard.
[...]
- _SC_NPROCESSORS_CONF
The number of processors configured.
- _SC_NPROCESSORS_ONLN
The number of processors currently online (available).
তাদের পড়তে /proc/stat
বা /proc/cpuinfo
গণনা করার জন্য একটি সহজ পদ্ধতির উপায় হবে :
#include<unistd.h>
#include<stdio.h>
int main(void)
{
char str[256];
int procCount = -1; // to offset for the first entry
FILE *fp;
if( (fp = fopen("/proc/stat", "r")) )
{
while(fgets(str, sizeof str, fp))
if( !memcmp(str, "cpu", 3) ) procCount++;
}
if ( procCount == -1)
{
printf("Unable to get proc count. Defaulting to 2");
procCount=2;
}
printf("Proc Count:%d\n", procCount);
return 0;
}
ব্যবহার /proc/cpuinfo
:
#include<unistd.h>
#include<stdio.h>
int main(void)
{
char str[256];
int procCount = 0;
FILE *fp;
if( (fp = fopen("/proc/cpuinfo", "r")) )
{
while(fgets(str, sizeof str, fp))
if( !memcmp(str, "processor", 9) ) procCount++;
}
if ( !procCount )
{
printf("Unable to get proc count. Defaulting to 2");
procCount=2;
}
printf("Proc Count:%d\n", procCount);
return 0;
}
গ্রেপ ব্যবহার করে শেলের একই পন্থা:
grep -c ^processor /proc/cpuinfo
অথবা
grep -c ^cpu /proc/stat # subtract 1 from the result