获取Linux内存信息,使用sscanf处理带有空格的字符串。

通过读取/proc/meminfo文件信息,解析其中的字符串。获取当前内存总量以及内存可用空间,当然可以做其它的拓展。

  

int read_meminfo(char *mem_total, char *mem_free)
{
    FILE *file_handle;
    const char * meminfo_file ="/proc/meminfo";
    char buffer[128];
    int len = 0;
    char *p1;
    file_handle = fopen(meminfo_file,"r");
    if (file_handle == NULL) {
        return -1;
    }

    while ( fgets(buffer,sizeof(buffer) - 1, file_handle) != NULL) {
        p1 = strchr(buffer, ':');
        if (! strncmp(buffer,"MemTotal", p1 - buffer)) {

            sscanf(p1+1,"%s%*s",mem_total);
            len = strlen(mem_total);
            *(mem_total+len) = ' ';
            sscanf(p1+1,"%*s%s",mem_total+len+1);

        } else if (! strncmp(buffer,"MemFree", p1 - buffer)) {

            sscanf(p1,"%*s%s",mem_free);
            len = strlen(mem_free);
            *(mem_free+len) = ' ';
            sscanf(p1+1,"%*s%s",mem_free+len+1);
            break;
        }
    }
    fclose(file_handle);
    return 0;
}

具体关于sscanf的用法参考这篇博文:http://www.cnblogs.com/lyq105/archive/2009/11/28/1612677.html

转载于:https://www.cnblogs.com/fogcell/p/6677819.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值