📄 micro.cpp
字号:
/* LiMon-Server| Copyright (C) 2006 Marcelo Busico|| Author: Marcelo Busico marcelobusico@gmail.com|| This program is free software which I release under the GNU General Public| License. You may redistribute and/or modify this program under the terms| of that license as published by the Free Software Foundation; either| version 2 of the License, or (at your option) any later version.|| This program is distributed in the hope that it will be useful,| but WITHOUT ANY WARRANTY; without even the implied warranty of| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the| GNU General Public License for more details. Version 2 is in the| LICENSE.txt file in the top level directory of this distribution.| | To get a copy of the GNU General Puplic License, write to the Free Software| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*//* Implementacion de la libreria que lee el Estado del microprocesador */#include "micro.h"#include "rutas.h"#include "pausa.h"#include <stdio.h>#include <string.h>#include <stdlib.h>//ConstructorEstadoMicroprocesador::EstadoMicroprocesador(){ FILE *f; //Puntero a archivo char ejecutable[100]; //Para ejecutar el Script char buf[256]; //Resultado del Script char cadenaEstado1[256]; //Estado en momento t1 char cadenaEstado2[256]; //Estado en momento t2 //Ruta del script strcpy(ejecutable,RUTA_SCRIPTS); //Nombre del script strcat(ejecutable,"micro.sh"); //Hace una pausa EsperarMili(50); //Ejecuta el script para t1 system(ejecutable); //Sale si no puede abrir el archivo if ((f = fopen("/tmp/limon-micro", "r")) == NULL) { strcpy(cadenaEstado1,""); strcpy(cadenaEstado2,""); return; } if(fgets(buf, sizeof(buf), f)!=NULL) strcpy(cadenaEstado1,buf); else strcpy(cadenaEstado1,""); //Cierra el archivo fclose(f); //Hace una pausa EsperarMili(50); //Ejecuta el script para t2 system(ejecutable); //Sale si no puede abrir el archivo if ((f = fopen("/tmp/limon-micro", "r")) == NULL) { strcpy(cadenaEstado1,""); strcpy(cadenaEstado2,""); return; } if(fgets(buf, sizeof(buf), f)!=NULL) strcpy(cadenaEstado2,buf); else strcpy(cadenaEstado2,""); //Cierra el archivo fclose(f); //Carga los datos en los atributos de la clase sscanf(cadenaEstado1,"%*s %lu",&user_time_t1); sscanf(cadenaEstado1,"%*s %*s %lu",&user_nice_time_t1); sscanf(cadenaEstado1,"%*s %*s %*s %lu",&system_time_t1); sscanf(cadenaEstado1,"%*s %*s %*s %*s %lu",&idle_time_t1); sscanf(cadenaEstado2,"%*s %lu",&user_time_t2); sscanf(cadenaEstado2,"%*s %*s %lu",&user_nice_time_t2); sscanf(cadenaEstado2,"%*s %*s %*s %lu",&system_time_t2); sscanf(cadenaEstado2,"%*s %*s %*s %*s %lu",&idle_time_t2);}//Devuelve Uso Totalint EstadoMicroprocesador::getUsoTotal(){ int aux=0; //Almacena el retorno de la funcion float carga_cpu=0; float num=0; float denom=0; //Calcula la carga total del sistema num= user_time_t2+user_nice_time_t2+system_time_t2 - (user_time_t1+user_nice_time_t1+system_time_t1); if(num==0) return 0; else { denom= user_time_t2+user_nice_time_t2+system_time_t2+idle_time_t2 - (user_time_t1+user_nice_time_t1+system_time_t1+idle_time_t1); carga_cpu=num/denom; //Transforma valor entre 0 y 100 aux = (int) (carga_cpu * 100); //Retorna return aux; } }//Devuelve Uso por el Usuarioint EstadoMicroprocesador::getUsoUsuario(){ int aux=0; //Almacena el retorno de la funcion float carga_cpu_user=0; float num=0; float denom=0; //Calcula la carga total del sistema num= user_time_t2+user_nice_time_t2 - (user_time_t1+user_nice_time_t1); if(num==0) return 0; else { denom= user_time_t2+user_nice_time_t2+system_time_t2+idle_time_t2 - (user_time_t1+user_nice_time_t1+system_time_t1+idle_time_t1); //denom= user_time_t2+user_nice_time_t2+idle_time_t2 - (user_time_t1+user_nice_time_t1+idle_time_t1); carga_cpu_user=num/denom; //Transforma valor entre 0 y 100 aux = (int) (carga_cpu_user * 100); //Retorna return aux; } }//Devuelve Uso por el Sistemaint EstadoMicroprocesador::getUsoSistema(){ int aux=0; //Almacena el retorno de la funcion float carga_cpu_sys=0; float num=0; float denom=0; //Calcula la carga total del sistema num= system_time_t2 - (system_time_t1); if(num==0) return 0; else { denom= user_time_t2+user_nice_time_t2+system_time_t2+idle_time_t2 - (user_time_t1+user_nice_time_t1+system_time_t1+idle_time_t1); //denom= system_time_t2+idle_time_t2 - (system_time_t1+idle_time_t1); carga_cpu_sys=num/denom; //Transforma valor entre 0 y 100 aux = (int) (carga_cpu_sys * 100); //Retorna return aux; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -