The sysinfo system call fills a structure with system statistics. Its only argument is a pointer to a struct sysinfo. Some of the more interesting fields of struct sysinfo that are filled include these:
· uptime— Time elapsed since the system booted, in seconds
· totalram— Total available physical RAM
· freeram— Free physical RAM
· procs— Number of processes on the system
See the sysinfo man page for a full description of structsysinfo. Include <linux/kernel.h>, <linux/sys.h>, and <sys/sysinfo.h> if you use sysinfo.
The program in Listing 8.12 prints some statistics about the current system.
#include <linux/kernel.h> #include <linux/sys.h> #include <stdio.h> #include <sys/sysinfo.h> int main () { /* Conversion constants. */ const long minute = 60; const long hour = minute * 60; const long day = hour * 24; const double megabyte = 1024 * 1024; /* Obtain system statistics. */ struct sysinfo si; sysinfo (&si); /* Summarize interesting values. */ printf ("system uptime : %ld days, %ld:%02ld:%02ld\n", si.uptime / day, (si.uptime % day) / hour, (si.uptime % hour) / minute, si.uptime % minute); printf ("total RAM : %5.1f MB\n", si.totalram / megabyte); printf ("free RAM : %5.1f MB\n", si.freeram / megabyte); printf ("process count : %d\n", si.procs); return 0; }