#include #include #include #include #define VERSION "1.00" void showHelp() { printf("Usage: getload [-v]\n"); printf(" -v display version\n"); } void showVersion() { printf("getload version %s\n", VERSION); } int getLoad(char *data) { FILE *loadavg; char raw[32]; loadavg = fopen("/proc/loadavg", "r"); if (!loadavg) { return 0; } fgets(raw, sizeof(raw)-1, loadavg); fclose(loadavg); strcpy(data, raw); return 1; } int processOptions(int argc, char **argv) { int c; int err = 0; opterr = 0; while ((c = getopt (argc, argv, "vh")) != -1) { switch (c) { case 'v': showVersion(); err = 1; break; case 'h': showHelp(); err = 1; break; case '?': printf("Unkown option -%c\n", optopt); break; default: printf("Unknown\n"); break; } } return err; } /** * Outputs current server load along with timestamp in CSV format * * @author Nick Giles */ int main(int argc, char **argv) { char loadavgraw[32]; char loadavg[5] = ""; /* Process options */ if (processOptions(argc, argv)) { return 1; } if (getLoad(loadavgraw)) { strncpy(loadavg, loadavgraw, sizeof(loadavg)-1); printf("\"%d\",\"%s\"\n", (int) time(0), loadavg); return 0; } else { printf("Could not read /proc/loadavg\n"); return 1; } }