DOS: Determining System Uptime
2 days ago
- 作者计划使用Windows NT4来参加Advent of Code,需要一个简单的运行时间工具。
- 现有的方法`net statistics server | more`很繁琐,因此为Windows创建了一个围绕`GetTickCount()`的简单封装。
- OS/2版本封装了`DosQuerySysInfo()`,而DOS则比较棘手,因为它不显式跟踪运行时间。
- Mark Aitchison在1997年用Pascal编写的程序`UPTIME.PAS`对`NUL`使用了`GetFTime`,但实际上读取的是标准输入(句柄0)的修改时间。
- 一个使用`_dos_getftime(0)`的C程序可以工作,但在`ctty`或DOSBox中会失效。
- Javier Gutierrez Chamorro的`UPTIMEC`使用CMOS实时时钟的闹钟时间,需要在`autoexec.bat`中运行`uptime /R`以获得正确值。
- 另一种方法是将启动时间存储在文件中,这样可移植性好但会弄乱文件系统。
- 作者选择了`_dos_getftime(0)`方法,因为它简单,而且他们只是偶尔需要检查运行时间。