¿Cómo obtener el uso de la CPU de la computadora usando programación C o C++? ¿Cómo obtener el uso de CPU de un proceso específico usando C o C++?
Función API para obtener ocupación de CPU:
GetSystemTimes
Función API para obtener uso de memoria:
Función GlobalMemoryStatusEx
Recupera información sobre el uso actual de la memoria física y virtual del sistema.
Función GetPerformanceInfo
Recupera los valores de rendimiento contenidos en la estructura PERFORMANCE_INFORMATION
Para obtener el uso de memoria de un programa específico:
Función GetProcessMemoryInfo
Recupera información sobre el uso de memoria del proceso especificado.
#define _WIN32_WINNT 0x0501
p>#include
#include
usando ? namespace std;
__int64 CompareFileTime? ( FILETIME hora1 , FILETIME hora2 )
{
__int64 a = time1.dwHighDateTime << 32 | time1.dwLowDateTime ;
__int64 b = time2.dwHighDateTime < < 32 | time2.dwLowDateTime ;
regresar ? (b - a);
}
¿void main()?
{ ? p>
HANDLE hEvent;
BOOL res ;
FILETIME preidleTime;
FILETIME prekernelTime;
FILETIME preuserTime ;
p>
FILETIME idleTime;
FILETIME kernelTime;
FILETIME userTime;
res = GetSystemTimes( &idleTime, &kernelTime , &userTime );
preidleTime = idleTime;
prekernelTime = kernelTime;
preuserTime = userTime;
hEvent = CreateEvent (NULL, FALSE,FALSE,NULL); // El valor inicial no está señalizado y se establece automáticamente en no señalizado después de cada activación
mientras (1){
WaitForSingleObject( hEvent,1000); //Espera 500 milisegundos
res = GetSystemTimes( &idle
Hora, &kernelTime, &userTime);
int idle = CompareFileTime( preidleTime,idleTime);
int kernel = CompareFileTime( prekernelTime, kernelTime);
int usuario = CompareFileTime(preuserTime, userTime);
int cpu = (kernel +usuario - inactivo) *100/(kernel+usuario);
int cpuidle = (inactivo) *100/ (kernel+usuario);
cout << "Utilización de CPU:" << cpu << "%" << " ? Tasa de inactividad de CPU:" < preidleTime = idleTime; prekernelTime = kernelTime; preuserTime = userTime ; } }