熟悉的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()用法。
(轉載請註明出處)