jni接口
- sscanf()
- popen()
- fgets()
FILE *file = NULL;
int offset = 0;
char line[MAX_SIZE];
char buffer[MAX_SIZE];
char result[MAX_SIZE * 2];
char size_m[MIN_SIZE];
char used[MIN_SIZE];
char avail[MIN_SIZE];
char usage[MIN_SIZE];
char mount[MIN_SIZE];
char fileSystem[MIN_SIZE];
if (NULL == (file = popen("df -h |tail -n +2", "r")))
{
LOGE("%s->%d| error %d, %s",__func__,__LINE__,errno, strerror(errno));
return env->NewStringUTF(constErrOpen);
}
memset(result, 0, sizeof(result));
result[0] = '{';
offset = 1;
for (size_t i = 0;!feof(file);i++)
{
fgets(line, MAX_SIZE, file);
sscanf(line, "%[^ ]",fileSystem);
sscanf(line, "%*[^ ]%*[ ]%[^ ]%*[ ]%[^ ]%*[ ]%[^ ]%*[ ]%[^ ]%*[ ]%[^\n]", size_m, used, avail, usage, mount);
LOGI("GetDiskInfo:: line %s", line);
if(0 == strlen(line))
{
continue;
}
memset(buffer, 0, sizeof(buffer));
sprintf(buffer, "\"%s size\":\"%s\",\"%s used\":\"%s\",\"%s avail\":\"%s\",\"%s usage\":\"%s\",\"%s mount\":\"%s\",", fileSystem, size_m, fileSystem, used, fileSystem, avail, fileSystem, usage, fileSystem, mount);
LOGI("GetDiskInfo::buffer %s", buffer);
int bufferlen = strlen(buffer);
memcpy(result+offset, buffer, bufferlen);
offset += bufferlen;
}
result[offset -1] = '}';
result[offset] = '\0';
LOGI("GetDiskInfo:: return %s", result);
pclose(file);
return env->NewStringUTF(result);
原文链接: https://www.cnblogs.com/xiongyungang/p/12526604.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/194562
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!