【发布时间】:2017-01-31 02:51:37
【问题描述】:
我正在研究 Unix 环境中的高级编程示例,并提出了以下问题:
如果进程时间存储为32位有符号整数,系统每秒计数100个tick,多少天后数值会溢出?
void proc_ovf()
{
int sec = 60;
int min = 60;
int hour = 24;
int tick = 100;
int epoch_time = (((INT_MAX / (sec * tick)) / min) / hour);
struct tm * timeinfo;
time_t epoch_time_as_proc_t = epoch_time;
timeinfo = localtime(&epoch_time_as_proc_t);
printf("3] overflow date of proc: %s", asctime(timeinfo));
}
以下解决方案是否合理计算溢出前多少天?
(((INT_MAX / (sec * tick)) / min) / hour)
这个计算得出 248 天。
【问题讨论】: