linux c++取得プロセスに対応するcpu占有率とメモリ占有率


転載元: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
#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; }