- Using strace
- access: Testing File Permissions
- fcntl: Locks and Other File Operations
- fsync and fdatasync: Flushing Disk Buffers
- getrlimit and setrlimit: Resource Limits
- getrusage: Process Statistics
- gettimeofday: Wall-Clock Time
- The mlock Family: Locking Physical Memory
- mprotect: Setting Memory Permissions
- nanosleep: High-Precision Sleeping
- readlink: Reading Symbolic Links
- sendfile: Fast Data Transfers
- setitimer: Setting Interval Timers
- sysinfo: Obtaining System Statistics
- uname
8.14 sysinfo: Obtaining System Statistics
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.
Listing 8.12 (sysinfo.c) Print System Statistics
#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; }