#include #include #include #include #include char *parse_string(char *in, char *name, char *out); char name[100], freq[100], id[100]; int getline(char **, size_t *, FILE *); int main(int argc, char *argv[]) { FILE *file = 0; char *buffer = malloc(1024); int size = 0; if ((file = fopen("/proc/cpuinfo", "r")) == NULL) { fprintf(stderr, "%s: /proc/cpuinfo: %s\n", argv[0], strerror(errno)); exit(1); } while(getline(&buffer, &size, file) && !feof(file)) { parse_string(buffer, "model name", name); parse_string(buffer, "cpu mhz", freq); parse_string(buffer, "vendor_id", id); } fclose(file); printf("Your processor is a %s %s (%s)\n", freq, name, id); return 0; } char *parse_string(char *in, char *name, char *out) { int i, j = 0; char *str = malloc(1024); while (1) if (in[j] == ' ' || in[j] == '\t') j++; else break; if (in[j] == '#') return 0; in += j; for (i=0; i