Exercise One
Part A
1. What is the cpu type and model?
/proc/cpuinfo
2. What version of the linux kernel is being used?
/proc/version
3. How long has it been since the system was last booted?
/proc/uptime
4. How much of the total cpu time has been spent executing in user model? System model? Idle?
/proc/stat
5. How much memory is configured into it?
/proc/meminfo
6. How many disk read/write requests have been made?
How many context switches has the kernel performed?
How many processes have been created since the system was booted?
/proc/stat
Part B: Programming
#include <stdio.h>
#define MAX_CHAR 80
int main(int argc, char* argc[])
{
FILE* filp;
char c[80];
char* ctemp;
int err;
filp = fopen("/proc/cpuinfo", "r");
if (filp < 0)
goto fail;
printf("The cpu type and model:/n");
while ((ctemp = fgets(c, MAX_CHAR, filp)) > 0)
{
if (strstr(c, "vendor_id") || (strstr(c, "model") && strstr(c, "name")) || (strstr(c, "cpu") && strstr(c, "MHz")))
printf(c);
}
if (ctemp < 0)
goto fail;
filp = fopen("/proc/uptime", "r");
if (filp < 0)
goto fail;
if ((ctemp = fgets(c, MAX_CHAR, filp)) >= 0)
{
if (sscanf(c, "%d", &err))
printf("seconds:%d/n", err);
printf("%d:%d:%d:%d/n", err/(24*3600), err/3600-err(24*3600)*24, err/60-err/3600*60, err%60);
}
return 0;
fail:
return -1;
}
The program above is tested in Redhat 9.0.
chen 2006-5-21