diff --git a/src/proc/libkyrtinfo.c b/src/proc/libkyrtinfo.c index d38af47..130d307 100644 --- a/src/proc/libkyrtinfo.c +++ b/src/proc/libkyrtinfo.c @@ -278,22 +278,42 @@ static int _get_cpu_data(unsigned long *user, unsigned long *sys, unsigned long { if (strstartswith(buffer, "cpu") == 0) { - char **list = strsplit(buffer, ' '); - if (!list) + // char **list = strsplit(buffer, ' '); + // if (!list) + // { + // fclose(fp); + // return 1; + // } + char list1[32] = {0}; + char list3[32] = {0}; + char list4[32] = {0}; + char list5[32] = {0}; + sscanf(buffer, "%*s %s %*s %s %s %s %*s", list1, list3, list4, list5); + klog_info("list1 = %s, list3 = %s, list4 = %s, list5 = %s\n", list1, list3, list4, list5); + if(strlen(list1) == 0) { - fclose(fp); return 1; } - klog_info("list1 = %s, list3 = %s, list4 = %s, list5 = %s\n", list[1], list[3], list[4], list[5]); - if(list[1]) - *user = atol(list[1]); - if(list[3]) - *sys = atol(list[3]); - if(list[4]) - *idle = atol(list[4]); - if(list[5]) - *iowait = atol(list[5]); - free(list); + *user = atol(list1); + + if(strlen(list3) == 0) + { + return 1; + } + *sys = atol(list3); + + if(strlen(list4) == 0) + { + return 1; + } + *idle = atol(list4); + + if(strlen(list5) == 0) + { + return 1; + } + *iowait = atol(list5); + // free(list); break; } else