Linux C++中获取指定pid、tid的CPU与内存占用信息
来源:互联网 发布:简谱制谱mac 编辑:程序博客网 时间:2024/05/29 04:47
使用的是ps命令+popen函数,直接上代码
- #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与内存占用信息
- Linux C++中获取指定pid、tid的CPU与内存占用信息
- Java代码实现获取安卓手机指定App的流量、CPU和内存占用信息
- linux中pid,tid, 以及 真实pid的关系
- linux中pid,tid, 以及 真实pid的关系
- linux中的pid与tid
- 在Linux中找出占用大量CPU的Java代码(将Java线程与Linux PID进行关联)
- linux中pid gid tgid tid的区别和联系
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- Linux pid tid说明
- C++ 获取进程内存占用和CPU利用率等信息
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- C#-获取磁盘,cpu,内存信息
- *** glibc detected *** ./Simple_Sound_Recording: free(): corrupted unsorted chunks: 0x0001c8a0 ***
- 双端队列
- 面向接口编程
- Smack类库详细介绍
- servlet/jquery/json 防止乱码
- Linux C++中获取指定pid、tid的CPU与内存占用信息
- sqlserver日期函数
- MAC OSX Lion安装JavaHL
- 从2-3-4树谈到Red-Black Tree(红黑树)
- 获取UIView的UIViewController
- 看完了,hibernate 关联关系
- MSVCRTD.LIB和LIBCMTD.LIB冲突
- 多种颜色css3的漂亮导航栏样式
- MFC多线程