熟悉的Unix的朋友都知道Unix下有一个功能强大的 time 函数。但是在windows下是没有这样的程序的。
本文参考了别人的写的这种程序并做了改进。
1. 剖析命令行参数需要用gcc的getopt(argc,argv,"hE:p:s") 函数: (PS: 没有GCC 环境的同学可以用IBM写的一个windows下的getopt 程序,附件中会给出来。)
2. 根据路径启动程序. 这里看到有人用 ShellExecute 来实现。这样实现有个缺点就是无法把程序的输出展现在当前命令行窗口中。所以我用CreateProcess 来启动程序,同时把程序的输出重定位到标准输出窗口(STDOUT)就可以了。
3. 统计时间。这里有很多统计方法: GetTickCount () 或者用更精确的 QueryPerformanceCounter() 和 QueryPerformanceFrequency() 来统计时间。但是MS 提供一个API GetProcessTimes() 可以精确统计这个进程的核心态和用户态时间,所以这里用这个来实现。
最后放上效果照片和源程序。
总结:
l 学习了 getopt 的使用和源码
l 熟悉了进程创建和输出重定位
l 学习了获取进程运行时间以及QueryPerformanceCounter() 和 QueryPerformanceFrequency()用法。
(转载请注明出处)