1 2 3 4 5 6 7 8 9 10 11 12 13 14
#define _GNU_SOURCE #include <stdlib.h> #include <sys/sysinfo.h> int getloadavg(double *a, int n) { struct sysinfo si; if (n <= 0) return n ? -1 : 0; sysinfo(&si); if (n > 3) n = 3; for (int i=0; i<n; i++) a[i] = 1.0/(1<<SI_LOAD_SHIFT) * si.loads[i]; return n; }