/***********************************************************************
* Code listing from "Advanced Linux Programming," by CodeSourcery LLC *
* Copyright (C) 2001 by New Riders Publishing *
* See COPYRIGHT for license information. *
***********************************************************************/
#include
/* Summarize a duration of time to standard output. TIME is the
amount of time, in seconds, and LABEL is a short descriptive label. */
void print_time (char* label, long time)
{
/* Conversion constants. */
const long minute = 60;
const long hour = minute * 60;
const long day = hour * 24;
/* Produce output. */
printf ("%s: %ld days, %ld:%02ld:%02ld\n", label, time / day,
(time % day) / hour, (time % hour) / minute, time % minute);
}
int main ()
{
FILE* fp;
double uptime, idle_time;
/* Read the system uptime and accumulated idle time from /proc/uptime. */
fp = fopen ("/proc/uptime", "r");
fscanf (fp, "%lf %lf\n", &uptime, &idle_time);
fclose (fp);
/* Summarize it. */
print_time ("uptime ", (long) uptime);
print_time ("idle time", (long) idle_time);
return 0;
}