網上資料顯示,有這麼三種方法可以用來獲取系統執行程序資訊:
方法平台
備註psapi
windows nt,windows2000,windows xp
獲取程序,驅動器,模組,記憶體和工作集資訊
效能計數器
windows nt,windows2000,windows xp
提供除程序清單以外的關於程序的更多資訊,可在遠端機器上使用。
toolhelp32
windows 9x,windows2000,windows xp
獲取程序,執行緒,模組和堆資訊
此前使用的snapshot就是屬於toolhelp32的(
psapi全稱為程序狀態api,msdn有介紹
該方法,使用過後,感覺與toolhelp32的大致相同,也比較簡潔方便。但是在獲取驅動、記憶體等方面,由於psapi有很多方法支援,相比而言,會更加簡單實用。
主要通過enumprocess函式來獲取所有執行程序的id,然後再分別通過enumprocessmodules、enumdevicedrives等函式,獲得相應的計數器或者指標資訊。
下面就簡單貼出msdn的幾段例項(原程式在win7下無法編譯通過,需要新增psapi.lib庫,既是#pragma comment(lib, "psapi.lib"))。
(四段**……有點懶了,呵呵)
[cpp] view plain copy
/* #include
#include
#include
#include
#pragma comment(lib, "psapi.lib")
// to ensure correct resolution of symbols, add psapi.lib to targetlibs
// and compile with -dpsapi_version=1
void printprocessnameandid( dword processid ) }
// print the process name and identifier.
_tprintf( text("%s (pid: %u)\n"), szprocessname, processid );
// release the handle to the process.
closehandle( hprocess );
} int main( void )
// calculate how many process identifiers were returned.
cprocesses = cbneeded / sizeof(dword);
// print the name and process identifier for each process.
for ( i = 0; i < cprocesses; i++ ) }
return 0;
} */
/* #include
#include
#include
#include
#pragma comment(lib, "psapi.lib")
// to ensure correct resolution of symbols, add psapi.lib to targetlibs
// and compile with -dpsapi_version=1
#define array_size 1024
int main( void ) }
} else
return 0;
} */
/* #include
#include
#include
#pragma comment (lib, "psapi.lib")
// to ensure correct resolution of symbols, add psapi.lib to targetlibs
// and compile with -dpsapi_version=1
void printmemoryinfo( dword processid )
closehandle( hprocess );
} int main( void )
// calculate how many process identifiers were returned.
cprocesses = cbneeded / sizeof(dword);
// print the memory usage for each process
for ( i = 0; i < cprocesses; i++ )
return 0;
} */
#include
#include
#include
#include
#pragma comment (lib, "psapi.lib")
// to ensure correct resolution of symbols, add psapi.lib to targetlibs
// and compile with -dpsapi_version=1
int printmodules( dword processid )
} } // release the handle to the process.
closehandle( hprocess );
return 0;
} int main( void )
return 0;
ubuntu後台執行程序
最近在azure上搭乙個基於web.py的web service,由於是用putty去ssh伺服器,在server上把web.py啟動以後,回到寢室由於pc睡眠,putty連線inactive,導致web service無法正常訪問。正常啟動web service python test.py 88...
使用procd執行程序
在openwrt系統內init程序被procd取代,procd作為父程序可以監控子程序的狀態。一旦子程序退出後即可在某乙個時刻嘗試進行重啟程序。在op系統內使用procd監控的有uhttpd,netifd等。在 etc init.d 資料夾內帶有use procd 1標誌,下面就介紹如何讓procd...
獲取系統的程序資訊
要想獲取系統的程序資訊,有個很好的方法,就是用toolhelp,其提供的介面可以方便的滿足你的要求,如下 include 首先匯入標頭檔案 pe就是我們獲取的程序結構體 dosomething fok process32next m hsnapshot,pe 還有嗎?其中結構體processentr...