⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 micro.cpp

📁 multiplataform real time Linux monitor
💻 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 + -