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