linux c++取得プロセスに対応するcpu占有率とメモリ占有率
2222 ワード
転載元:https://blog.csdn.net/thedarkfairytale/article/details/71079218
背景说明:ちょうど1つのプロジェクトで不合理なメモリ占有のためシステム全体のSSHが登录できないことがあって、すべての监视ツールが関连する情报を定期的に记录する必要があります.
コンパイルコマンド:gcc-std=c++11 main.cpp
起動コマンド:./a.outプロセス名
出力結果:
pid=3259 pcpu=1.234568 procmem=1050176 virtualmem=3259
背景说明:ちょうど1つのプロジェクトで不合理なメモリ占有のためシステム全体のSSHが登录できないことがあって、すべての监视ツールが関连する情报を定期的に记录する必要があります.
コンパイルコマンド:gcc-std=c++11 main.cpp
起動コマンド:./a.outプロセス名
出力結果:
pid=3259 pcpu=1.234568 procmem=1050176 virtualmem=3259
#include
#include
#include
#include
#include
#define VMRSS_LINE 17
#define VMSIZE_LINE 13
#define PROCESS_ITEM 14
typedef struct {
unsigned long user;
unsigned long nice;
unsigned long system;
unsigned long idle;
}Total_Cpu_Occupy_t;
typedef struct {
unsigned int pid;
unsigned long utime; //user time
unsigned long stime; //kernel time
unsigned long cutime; //all user time
unsigned long cstime; //all dead time
}Proc_Cpu_Occupy_t;
// N
const char* get_items(const char*buffer ,unsigned int item){
const char *p =buffer;
int len = strlen(buffer);
int count = 0;
for (int i=0; i [user]
");
return 1;
}
unsigned int pid=0;
if(argc > 2){
pid = get_pid(argv[1],argv[2]);
}
else{
pid = get_pid(argv[1]);
}
printf("pid=%d
",pid);
printf("pcpu=%f
",get_proc_cpu(pid));
printf("procmem=%d
",get_proc_mem(pid));
printf("virtualmem=%d
",get_proc_virtualmem(pid));
return 0;
}