Linux C++获取进程占用内存、机器内存
2021/12/7 7:16:50
本文主要是介绍Linux C++获取进程占用内存、机器内存,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在Linux C++程序中获取进程占用内存、机器内存的方法:
#include <unistd.h> #include <cstring> #include <iostream> using namespace std; int get_memory_by_pid(pid_t pid) { FILE* fd; char line[1024] = {0}; char virtual_filename[32] = {0}; char vmrss_name[32] = {0}; int vmrss_num = 0; sprintf(virtual_filename, "/proc/%d/status", pid); fd = fopen(virtual_filename, "r"); if(fd == NULL) { cout << "open " << virtual_filename << " failed" << endl; exit(1); } // VMRSS line is uncertain for(int i = 0 ; i < 60; i++) { if(strstr(line, "VMRSS:") != NULL) { sscanf(line, "%s %d", vmrss_name, &vmrss_num); break; } } fclose(fd); return vmrss_num; } int get_machine_memory() { const char* virtual_filename = "/proc/meminfo"; FILE* fd; char line[1024] = {0}; fd = fopen(virtual_filename, "r"); if(fd == NULL) { cout << "open " << virtual_filename << " failed" << endl; exit(1); } char vmrss_name[32]; int machine_memory; fgets(line, sizeof(line), fd); sscanf(line, "%s %d", vmrss_name, &machine_memory); fclose(fd); return machine_memory; } int main() { cout << "The current process consumes " << get_memory_by_pid(getpid()) / 1024 << "MB memory" << endl; cout << "The machine memory: " << get_machine_memory() / 1024 << "MB memory" << endl; return 0; }
这篇关于Linux C++获取进程占用内存、机器内存的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南