/proc/update
uptimeコマンドは、「//proc/uptime」を読み込んでいる。
ソースで確認。
ソースコード:whattime.c
sysinfo.c
uptime(&uptime_secs, &idle_secs);
で/proc/updateの内容を取得している。
procps-3.2.8\proc\sysinfo.c(37,9) [SJIS]: #define UPTIME_FILE "/proc/uptime"と定義
double up_1, up_2, seconds;
do{
FILE_TO_BUF(UPTIME_FILE,uptime_fd); sscanf(buf, "%lf", &up_1);
/* uptime(&up_1, NULL); */
FILE_TO_BUF(STAT_FILE,stat_fd);
sscanf(buf, "cpu %Lu %Lu %Lu %Lu", &user_j, &nice_j, &sys_j, &other_j);
FILE_TO_BUF(UPTIME_FILE,uptime_fd); sscanf(buf, "%lf", &up_2);
/* uptime(&up_2, NULL); */
} while*1; /* want under 0.1% error */
updays = (int) uptime_secs / (60*60*24);
strcat (buf, "up ");
if (updays)
pos += sprintf(buf + pos, "%d day%s, ", updays, (updays != 1) ? "s" : "");
upminutes = (int) uptime_secs / 60;
uphours = upminutes / 60;
uphours = uphours % 24;
upminutes = upminutes % 60;
if(uphours)
pos += sprintf(buf + pos, "%2d:%02d, ", uphours, upminutes);
else
pos += sprintf(buf + pos, "%d min, ", upminutes);
E.2.28. /proc/uptime
/proc/uptime
の出力は極めて少なくなります:350735.47 234388.90
*1:long long)( (up_2-up_1)*1000.0/up_1