#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
#include <time.h>
//extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
// };
#define CMD "ps -u|grep battle/config.battle >> ./servers/battle/cpumem_battle.txt"
#define CMDEND "servers/battle/config.battle"
int c_getcpumem(lua_State *L){
char szTest[1000] = {0};
char nowCpu[10] = {0};
char newMem[10] = {0};
FILE *_fp = fopen("./servers/battle/cpumem_battle.txt","w");
if(NULL == _fp){
printf("failed to open\n");
return 1;
}
fclose(_fp);
system(CMD);
FILE *fp = fopen("./servers/battle/cpumem_battle.txt","r");
if(NULL == fp){
printf("failed to open\n");
return 1;
}
while(!feof(fp)){
memset(szTest,0,sizeof(szTest));
fgets(szTest,sizeof(szTest)-1,fp);
if(strstr(szTest,CMDEND)){
/*
szTest =
zhuk 2144 15.7 0.4 2676720 33788 pts/1 Sl+ 10:45 0:35 ./servers/battle/config.battle
*/
int j = 0;
int i ;
int type = 1;
for(i=0 ; i<100 ; i++){
if(szTest[i]==' '){
j=1;
continue;
}
else if(j==1){
break;
}
printf("first_for:szTest[i]=%c,j=%d\n",szTest[i],j);
}
for(; i<100 ; i++){
if(szTest[i]==' '&&type==1){
j=0;
type = 2;
continue;
}
if(szTest[i]==' '&&type==2){
i=i+2;
break;
}
nowCpu[j++] = szTest[i];
printf("szTest[i]=%c,j=%d\n",szTest[i],j);
}
nowCpu[j] = '\0';
printf("nowCpu=%s,j=%d\n",nowCpu,j);
type = 1;
for(; i<100 ; i++){
if(szTest[i]==' '){
if(type==1){
j=0;
type = 2;
continue;
}else if(type==2){
j=0;
type = 3;
continue;
}else{
break;
}
}
newMem[j++] = szTest[i];
printf("11111szTest[i]=%c,j=%d\n",szTest[i],j);
}
newMem[j] ='\0';
int mem = 0 ;
if(newMem[j-1] == 'm'){
sscanf(newMem,"%dm",&mem);
mem*=1024;
}else if(newMem[j-1] == 'M'){
sscanf(newMem,"%dM",&mem);
mem*=1024;
}else if(newMem[j-1] == 'g'){
sscanf(newMem,"%dg",&mem);
mem=mem*1024*1024;
}else if(newMem[j-1] == 'G'){
sscanf(newMem,"%dG",&mem);
mem=mem*1024*1024;
}else{
mem = atoi(newMem);
}
lua_pushnumber(L,cpu);
lua_pushnumber(L,mem);
break;
}
}
fclose(fp);
return 2;
}
int luaopen_cpumeminfo(lua_State *L){
luaL_Reg cpumeminfo [] = {
{"getcpumem", c_getcpumem},
{NULL, NULL}
};
luaL_checkversion(L);
luaL_newlib(L, cpumeminfo);
return 1;
}
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
#include <time.h>
//extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
// };
#define CMD "ps -u|grep battle/config.battle >> ./servers/battle/cpumem_battle.txt"
#define CMDEND "servers/battle/config.battle"
int c_getcpumem(lua_State *L){
char szTest[1000] = {0};
char nowCpu[10] = {0};
char newMem[10] = {0};
FILE *_fp = fopen("./servers/battle/cpumem_battle.txt","w");
if(NULL == _fp){
printf("failed to open\n");
return 1;
}
fclose(_fp);
system(CMD);
FILE *fp = fopen("./servers/battle/cpumem_battle.txt","r");
if(NULL == fp){
printf("failed to open\n");
return 1;
}
while(!feof(fp)){
memset(szTest,0,sizeof(szTest));
fgets(szTest,sizeof(szTest)-1,fp);
if(strstr(szTest,CMDEND)){
/*
szTest =
zhuk 2144 15.7 0.4 2676720 33788 pts/1 Sl+ 10:45 0:35 ./servers/battle/config.battle
*/
int j = 0;
int i ;
int type = 1;
for(i=0 ; i<100 ; i++){
if(szTest[i]==' '){
j=1;
continue;
}
else if(j==1){
break;
}
printf("first_for:szTest[i]=%c,j=%d\n",szTest[i],j);
}
for(; i<100 ; i++){
if(szTest[i]==' '&&type==1){
j=0;
type = 2;
continue;
}
if(szTest[i]==' '&&type==2){
i=i+2;
break;
}
nowCpu[j++] = szTest[i];
printf("szTest[i]=%c,j=%d\n",szTest[i],j);
}
nowCpu[j] = '\0';
printf("nowCpu=%s,j=%d\n",nowCpu,j);
type = 1;
for(; i<100 ; i++){
if(szTest[i]==' '){
if(type==1){
j=0;
type = 2;
continue;
}else if(type==2){
j=0;
type = 3;
continue;
}else{
break;
}
}
newMem[j++] = szTest[i];
printf("11111szTest[i]=%c,j=%d\n",szTest[i],j);
}
newMem[j] ='\0';
int mem = 0 ;
if(newMem[j-1] == 'm'){
sscanf(newMem,"%dm",&mem);
mem*=1024;
}else if(newMem[j-1] == 'M'){
sscanf(newMem,"%dM",&mem);
mem*=1024;
}else if(newMem[j-1] == 'g'){
sscanf(newMem,"%dg",&mem);
mem=mem*1024*1024;
}else if(newMem[j-1] == 'G'){
sscanf(newMem,"%dG",&mem);
mem=mem*1024*1024;
}else{
mem = atoi(newMem);
}
lua_pushnumber(L,cpu);
lua_pushnumber(L,mem);
break;
}
}
fclose(fp);
return 2;
}
int luaopen_cpumeminfo(lua_State *L){
luaL_Reg cpumeminfo [] = {
{"getcpumem", c_getcpumem},
{NULL, NULL}
};
luaL_checkversion(L);
luaL_newlib(L, cpumeminfo);
return 1;
}