如何从char[]中获取值

how to get a value from a char[]

本文关键字:获取 char      更新时间:2023-10-16

无论如何,感谢所有帮助我的人。我想从/proc/pid/status中获得VmRSS值,下面是代码

int main()
{ 
    const int PROCESS_MEMORY_FILE_LEN = 500;
    FILE *file;
    std::string path("/proc/4378/status");
    //path += boost::lexical_cast<std::string>( pid );
    //path += "/status";
    if(!(file = fopen(path.c_str(),"r")))
    {
        std::cout <<"open " << path<<"is failed " << std::endl;
        return float(-1);
    }
    char fileBuffer[PROCESS_MEMORY_FILE_LEN];
    memset(fileBuffer, 0, PROCESS_MEMORY_FILE_LEN);
    if(fread(fileBuffer, 1, PROCESS_MEMORY_FILE_LEN - 1, file) != (PROCESS_MEMORY_FILE_LEN - 1))
    {
        std::cout <<"fread /proc/pid/status is failed"<< std::endl;
        return float(-1);
    }
    fclose(file);
    unsigned long long memoryUsage = 0;
    int a = sscanf(fileBuffer,"VmRSS: %llu", &memoryUsage);
    std::cout << a << std::endl;
    std::cout << memoryUsage << std::endl;
}

最后,谢谢

根据您的评论:在您的char数组中使用c++算法结合c++字符串库查找VmRSS。然后你会得到VmRSS的位置,你所要做的就是检索想要的结果。如果对这些条目的结构有一些了解,这应该是一件容易的事。

除此之外,使用fstream直接读取字符串可能会更好。