Hasty Briefsbeta

双语

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)`方法,因为它简单,而且他们只是偶尔需要检查运行时间。