獲取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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM