[eside-ghost] %cpu de un proceso en Windows
Koldo Ramirez
koldo.ramirez en gmail.com
Dom Dic 1 22:16:00 CET 2013
Hola ALi
Te adjunto el código en C para hacerlo. Si quieres te puedo enviar un
ejecutable para ser llamado desde linea de comandos.
Saludos
Koldo
void Sleep(int msec)
{
::timespec tval;
tval.tv_sec = msec / 1000;
tval.tv_nsec = (msec % 1000) * 1000000;
nanosleep(&tval, NULL);
}
int GetProcessCPUUsage(int64 pid)
{
HANDLE hp = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, 0,
DWORD(pid));
if (hp == NULL){
CloseHandle(hp);
return -1;
}
FILETIME iddleTime, kernelTimeS, userTimeS, kernelTimeS_0, userTimeS_0;
FILETIME creationTime, exitTime, kernelTimeP, userTimeP, kernelTimeP_0,
userTimeP_0;
GetSystemTimes(&iddleTime, &kernelTimeS_0, &userTimeS_0);
GetProcessTimes(hp, &creationTime, &exitTime, &kernelTimeP_0,
&userTimeP_0);
Sleep(50); // It spends some ms elapsing the process used time
GetSystemTimes(&iddleTime, &kernelTimeS, &userTimeS);
GetProcessTimes(hp, &creationTime, &exitTime, &kernelTimeP, &userTimeP);
int64 kernelS = SubtractFILETIME(kernelTimeS, kernelTimeS_0);
int64 userS = SubtractFILETIME(userTimeS, userTimeS_0);
int64 totalS = kernelS + userS;
int64 kernelP = SubtractFILETIME(kernelTimeP, kernelTimeP_0);
int64 userP = SubtractFILETIME(userTimeP, userTimeP_0);
int64 totalP = kernelP + userP;
int cpu = int((100*totalP)/totalS);
CloseHandle(hp);
return cpu;
}
2013/11/29 ALi <osatien en gmail.com>
> muestra tiempo de uso de un proceso de la cpu por lo que creo que no me
> vale :( quiero un porcentaje xk no se el total sobre el que esta tomando el
> tiempo
>
>
> 2013/11/29 Fernando Urien <txoroa en gmail.com>
>
>> Hola!
>> De memoria:
>> Tasklist /v >> fichero.txt
>>
>> Dime si te funciona.
>>
>> Zefe
>> *De: *ALi
>> *Enviado: *viernes, 29 de noviembre de 2013 11:36
>> *Para: *Lista de eside-ghost
>> *Responder a: *Lista de eside-ghost
>> *Asunto: *[eside-ghost] %cpu de un proceso en Windows
>>
>> Buenos dias si pueden ser ...
>>
>> no se si esto tiene sentido pregutnarlo aqui, pero se que debeis saberlo
>> :P
>>
>> necesito alguna utilidad para sacar el %cpu de unos procesos en un
>> instante. Vamos un taskmgr >> fichero
>>
>>
>> si me decis como puedo hacerlo os lo agradezco :)
>>
>> por favor, no me mandeis al wmi que esos datos no me coinciden :( tengo
>> un 100% idle y un 2% de uso de no se que servicio. Que alguien me lo
>> explique xD
>>
>> el top de cygwin tampoco me vale xk solo me muestra aquellos con posix.
>> encontre un programa pv.exe que parecia valer, pero en 64 bits se pierde.
>>
>> Todos los windows son graficos?? no se puede dejar algo arrancado por
>> saber como va? :(
>>
>> que maravilla de ps y que a gusto estoy con linux :)
>>
>>
>> gracias de antebrazo
>>
>>
>> _______________________________________________
>> eside-ghost mailing list
>> eside-ghost en listas.deusto.es
>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>> _______________________________________________
>> eside-ghost mailing list
>> eside-ghost en listas.deusto.es
>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>
>
>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://listas.deusto.es/mailman/private/eside-ghost/attachments/20131201/76b18326/attachment.html>
Más información sobre la lista de distribución eside-ghost