该函数显示系统时间。
先看main
根据参数个数,调用uptime函数。
switch (argc - optind)
{
case 0: /* uptime */
uptime (UTMP_FILE);
break;
先看main
根据参数个数,调用uptime函数。
switch (argc - optind)
{
case 0: /* uptime */
uptime (UTMP_FILE);
break;
case 1: /* uptime <utmp file> */
uptime (argv[optind]);
break;
uptime (argv[optind]);
break;
default: /* lose */
error (0, 0, _("too many arguments"));
usage (EXIT_FAILURE);
}
其中,当不传入参数时,调用 uptime (UTMP_FILE); 这段很麻烦。
直接看uptime函数
uptime ---->read_utmp
---->print_uptime
其中read_utmp好象是把文件中的数据读到一个数组中,没看懂。
print_uptime写得也很长,其中如下几句大约是关键:
updays = uptime / 86400;
uphours = (uptime - (updays * 86400)) / 3600;
upmins = (uptime - (updays * 86400) - (uphours * 3600)) / 60;
看到没,就像从一个整数中取出各个数位上的数字来。比如从321中取出各位:
n=321
个位数=n % 10
十位数=(n-个位数*1)/10
百位数=(n-个位数*1-十位数*10)/10
其它的代码,我没看懂。下次继续吧。
error (0, 0, _("too many arguments"));
usage (EXIT_FAILURE);
}
其中,当不传入参数时,调用 uptime (UTMP_FILE); 这段很麻烦。
直接看uptime函数
uptime ---->read_utmp
---->print_uptime
其中read_utmp好象是把文件中的数据读到一个数组中,没看懂。
print_uptime写得也很长,其中如下几句大约是关键:
updays = uptime / 86400;
uphours = (uptime - (updays * 86400)) / 3600;
upmins = (uptime - (updays * 86400) - (uphours * 3600)) / 60;
看到没,就像从一个整数中取出各个数位上的数字来。比如从321中取出各位:
n=321
个位数=n % 10
十位数=(n-个位数*1)/10
百位数=(n-个位数*1-十位数*10)/10
其它的代码,我没看懂。下次继续吧。