Linux C++中获取指定pid、tid的CPU与内存占用信息
2012-09-07 17:12
543 查看
使用的是ps命令+popen函数,直接上代码
编译:g++ GetInfo.cpp -o GetInfo -g
测试命令:
./GetInfo pid
显示pid进程cpu及内存信息
./GetInfo pid tid
显示pid进程的内存占用和其中tid线程的cpu占用信息
./GetInfo 什么参数都不输入显示本进程cpu及内存信息(有点鸡肋)
#include<iostream> using namespace std; #define _LINE_LENGTH 300 bool GetCpuMem(float &cpu,size_t &mem, int pid,int tid = -1) { bool ret = false; char cmdline[100]; sprintf(cmdline, "ps -o %%cpu,rss,%%mem,pid,tid -mp %d", pid); FILE *file; file = popen(cmdline, "r"); if (file == NULL) { printf("file == NULL\n"); return false; } char line[_LINE_LENGTH]; float l_cpuPrec=0; int l_mem=0; float l_memPrec=0; int l_pid=0; int l_tid=0; if (fgets(line, _LINE_LENGTH, file) != NULL) { // printf("1st line:%s",line); if (fgets(line, _LINE_LENGTH, file) != NULL) { // printf("2nd line:%s",line); sscanf( line, "%f %d %f %d -", &l_cpuPrec, &l_mem, &l_memPrec, &l_pid ); cpu = l_cpuPrec; mem = l_mem/1024; if( tid == -1 ) ret = true; else { while( fgets(line, _LINE_LENGTH, file) != NULL ) { sscanf( line, "%f - - - %d", &l_cpuPrec, &l_tid ); // printf("other line:%s",line); // cout<<l_cpuPrec<<'\t'<<l_tid<<endl; if( l_tid == tid ) { printf("cpuVal is tid:%d\n",tid); cpu = l_cpuPrec; ret = true; break; } } if( l_tid != tid ) printf("TID not exist\n"); } } else printf("PID not exist\n"); } else printf("Command or Parameter wrong\n"); pclose(file); return ret; } int main(int argc, char** argv) { float cpu=0; size_t mem=0; int pid=0; int tid=-1; if( argc > 1 ) pid = atoi(argv[1]); else pid = getpid(); if( argc > 2 ) tid = atoi(argv[2]); while(1) { if( GetCpuMem( cpu, mem, pid, tid ) ) { printf("%%CPU:%.1f\tMEM:%dMB\n", cpu, mem); } else printf("return false\n"); break; sleep(5); } return 0; }
编译:g++ GetInfo.cpp -o GetInfo -g
测试命令:
./GetInfo pid
显示pid进程cpu及内存信息
./GetInfo pid tid
显示pid进程的内存占用和其中tid线程的cpu占用信息
./GetInfo 什么参数都不输入显示本进程cpu及内存信息(有点鸡肋)
相关文章推荐
- Linux C++中获取指定pid、tid的CPU与内存占用信息
- Linux C++中获取指定pid、tid的CPU与内存占用信息
- C/C++获取操作系统、CPU、内存信息(windows和linux)
- C/C++获取操作系统、CPU、内存信息(windows和linux)
- Java代码实现获取安卓手机指定App的流量、CPU和内存占用信息
- C++ 获取进程内存占用和CPU利用率等信息
- 使用python获取CPU和内存信息(linux系统)
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- C/C++获取操作系统、CPU、内存信息
- linux查看进程占用cpu、内存、io信息
- Linux下获取占用CPU内存资源最多的10个进程的方法
- 转载:linux系统下 python获取 内存、cpu、负载、网络流量、硬盘等信息
- linux下获取占用CPU/内存资源最多的10个进程
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- C/C++通过WMI和系统API函数获取获取系统硬件(cpu,内存,显卡,网卡)配置信息
- java对Linux系统的CPU利用率的计算和内存信息的获取
- Linux获取CPU,内存和硬盘信息
- c++获取系统信息(操作系统,cpu,内存,ip,mac)
- C++/QT 获取系统CPU、内存、磁盘、进程相关信息