然而,感谢所有帮助我的人。 我想从/ 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;
}
最后,谢谢
答案 0 :(得分:0)
根据您的评论:要在您的char数组中查找VmRSS
,请将C++ algorithms与C ++ string library结合使用。然后你将获得VmRSS
的位置,你所要做的就是检索想要的结果。通过对这些条目结构的一点了解,这应该是一项简单的任务。
除此之外,最好使用fstream直接读取字符串。