Enviado em 09/09/2014 - 09:37h
Pessoal,
Como faço para caprturar dados sepadorados de uma linha de arquivo, tipo se der um cat /proc/stat obtenho em uma das linhas o seguinte retorno:
Fiz um script bem ralé só para testar, pretendo melhorar bem o código e otimizar mas primeiro preciso fazer funcionar.
Já consegui fazer o levantamento da quantidade, setar a linha que contém
cpu0, mas não sei como dividir esses números na frente dela em variavés.
Segue meu rascunho de código:
Como faço para caprturar dados sepadorados de uma linha de arquivo, tipo se der um cat /proc/stat obtenho em uma das linhas o seguinte retorno:
cpu0 96804 9119 387122 6739554 62390 456399 64543 0 0 0
Fiz um script bem ralé só para testar, pretendo melhorar bem o código e otimizar mas primeiro preciso fazer funcionar.
Já consegui fazer o levantamento da quantidade, setar a linha que contém
cpu0, mas não sei como dividir esses números na frente dela em variavés.
Segue meu rascunho de código:
#include <iostream>
#include <fstream>
#include <cstring>
#include <stdlib.h>
#include <sstream>
#include <fcntl.h>
#include <stdint.h>
//Variaveis
FILE *fp;
int line_num =1;
int find_result =0;
char buffer[8192];
int Pesquisa()
{
if((fp = fopen("/proc/stat","r")) != NULL)
{
while(fgets(buffer,8192,fp) != NULL)
{
if((strstr(buffer,"cpu"))!= NULL)
{
find_result++;
}
line_num++;
}
if(fp)
fclose(fp);
return find_result;
}
else{
return -1;
}
}
void cpus_valores(int total)
{
int stat,useVmstatfile,cpu;
std::string Testes;
cpu = total -1;
std::ostringstream ss;
if((fp = fopen("/proc/stat","r")) != NULL)
{
for(int i = 0; i< cpu; i++)
{
ss << "cpu" << i;
Testes = ss.str();
//Teste de Captura do Arquivo
while(fgets(buffer,8192,fp) != NULL)
{
if((strstr(buffer,"Testes"))!= NULL)
{
}
line_num++;
}
ss.str("");
}
if(fp)
fclose(fp);
}
}
int main(int argc, char *argv[])
{
int Total = 0;
Total = Pesquisa();
std::cout<< Total << std::endl;
cpus_valores(Total);
return 0;
}