[TD-364] fix definite lost while get card info

This commit is contained in:
Shengliang Guan 2020-06-11 17:17:34 +08:00
parent 561f9a06af
commit 73c158e1ce
1 changed files with 21 additions and 12 deletions

View File

@ -332,33 +332,42 @@ bool taosGetDisk() {
} }
static bool taosGetCardInfo(int64_t *bytes) { static bool taosGetCardInfo(int64_t *bytes) {
*bytes = 0;
FILE *fp = fopen(tsSysNetFile, "r"); FILE *fp = fopen(tsSysNetFile, "r");
if (fp == NULL) { if (fp == NULL) {
uError("open file:%s failed", tsSysNetFile); uError("open file:%s failed", tsSysNetFile);
return false; return false;
} }
int64_t rbytes, rpackts, tbytes, tpackets;
int64_t nouse1, nouse2, nouse3, nouse4, nouse5, nouse6;
char nouse0[200] = {0};
size_t len; size_t len = 2048;
char * line = NULL; char * line = calloc(1, len);
*bytes = 0;
while (!feof(fp)) { while (!feof(fp)) {
tfree(line); memset(line, 0, len);
len = 0;
int64_t rbytes = 0;
int64_t rpackts = 0;
int64_t tbytes = 0;
int64_t tpackets = 0;
int64_t nouse1 = 0;
int64_t nouse2 = 0;
int64_t nouse3 = 0;
int64_t nouse4 = 0;
int64_t nouse5 = 0;
int64_t nouse6 = 0;
char nouse0[200] = {0};
getline(&line, &len, fp); getline(&line, &len, fp);
if (line == NULL) { line[len - 1] = 0;
break;
}
if (strstr(line, "lo:") != NULL) { if (strstr(line, "lo:") != NULL) {
continue; continue;
} }
sscanf(line, sscanf(line,
"%s %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64, "%s %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64 " %" PRId64
" %" PRId64,
nouse0, &rbytes, &rpackts, &nouse1, &nouse2, &nouse3, &nouse4, &nouse5, &nouse6, &tbytes, &tpackets); nouse0, &rbytes, &rpackts, &nouse1, &nouse2, &nouse3, &nouse4, &nouse5, &nouse6, &tbytes, &tpackets);
*bytes += (rbytes + tbytes); *bytes += (rbytes + tbytes);
} }