Advertisement
slatenails

Untitled

Aug 14th, 2013
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.95 KB | None | 0 0
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <errno.h>
  4.  
  5. #define NUMCORES 2
  6. long g_CPUUsage[NUMCORES][4];
  7.  
  8. int main() {
  9.     int coreFlags = 0;
  10.     char buf[1024];
  11.     FILE* fp;
  12.     int i;
  13.    
  14.     if ((fp = fopen ("/proc/stat", "r")) == NULL) {
  15.         fprintf (stderr, "couldn't open /proc/stat: %s\n", strerror (errno));
  16.         return 1;
  17.     }
  18.    
  19.     while (fgets (buf, sizeof buf, fp)) {
  20.         int coreid;
  21.         long coredata[4];
  22.         if (sscanf (buf, "cpu%d %ld %ld %ld %ld", &coreid, &coredata[0],
  23.             &coredata[1], &coredata[2], &coredata[3]) && coreid < NUMCORES)
  24.         {
  25.             memcpy (&g_CPUUsage[coreid][0], &coredata[0], sizeof coredata);
  26.             coreFlags |= (1 << coreid);
  27.         }
  28.     }
  29.    
  30.     fclose (fp);
  31.  
  32.     if (coreFlags != (1 << NUMCORES) - 1) {
  33.         fprintf (stderr, "error: insufficient data\n");
  34.         return 1;
  35.     } else
  36.         for (i = 0; i < NUMCORES; ++i)
  37.             printf ("Core %d: [%ld, %ld, %ld, %ld]\n", i, g_CPUUsage[i][0],
  38.                 g_CPUUsage[i][1], g_CPUUsage[i][2], g_CPUUsage[i][3]);
  39.    
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement