c++ - 如何从 char[] 获取值

标签 c++ linux scanf

不过,还是感谢所有帮助我的人。 我想从/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;
}

最后,谢谢

最佳答案

根据您的评论:要在字符数组中查找 VmRSS,请使用 C++ algorithms与 C++ 结合string library 。然后您将获得 VmRSS 的位置,您所要做的就是检索想要的结果。只要对这些条目的结构有一点了解,这应该是一个简单的任务。

除此之外,最好使用 fstream用于直接读入字符串。

关于c++ - 如何从 char[] 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8558006/

相关文章:

c++ - 在类中使用私有(private)成员函数

c - 如何在 Linux 中使用 OpenMax 解码 h264 视频?这段代码正确吗?

linux - 在 shell 脚本中执行 cp -u 时遇到问题

C++ - 读取和打印整个文件

c - C 中的 fscanf 带有一个没有空格的文本文件

c++ - 在 Visual Studio 2010 中编译 C++ 程序时出错

c++ - boost library........预构建的变体?

C++ 用户输入限制,正确重试,没有 "goto"

linux - 比较两个文件并打印不匹配的行

C++ 读取长的非分隔整数,将它们分开并放入二维数组中