社区讨论

关于c++内存检测器

灌水区参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo8e8x1p
此快照首次捕获于
2023/10/27 17:11
2 年前
此快照最后确认于
2023/10/27 17:11
2 年前
查看原帖
CPP
#include <iostream>
#include "stdio.h"
#include <dirent.h>
#include <pwd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <assert.h>
#include <signal.h>
#include <chrono>
#include <thread>
using namespace std;
using std::this_thread::sleep_for;
//请使用C++实现一个内存监控程序
class SystemInfo{
  public:
    int mem_total;
    int mem_free;
    int mem_cached;
    int swap_cached;
    int swap_total;
    int swap_free;
    SystemInfo getSystemInfo(void);
};

SystemInfo getSystemInfo(){
  FILE *file;
  char buffer[100];
  SystemInfo info ;
  file = fopen("/proc/meminfo","r");
  assert(file);
  if(file){
    while(fgets(buffer,100,file)!=NULL){
            sscanf (buffer, "MemTotal:\t%d kB", &info.mem_total);
            sscanf (buffer, "MemFree:\t%d kB", &info.mem_free);
            sscanf (buffer, "Cached:\t%d kB", &info.mem_cached);
            sscanf (buffer, "SwapCached:\t%d kB", &info.swap_cached);
            sscanf (buffer, "SwapTotal:\t%d kB", &info.swap_total);
            sscanf (buffer, "SwapFree:\t%d kB", &info.swap_free);
    }
  fclose(file);
  }
  return info;
}

int main(void){
  SystemInfo info;
  int i = 0;
  
  while(1){
    if(i==1000){
      info = getSystemInfo();      
      i=0;
      fprintf(stdout,"mem_total   mem_free   mem_cached    swap_cached    swap_total    swap_free\n");
      fflush(stdout);
      fprintf(stdout,"%d    %d   %d       %d              %d             %d",info.mem_total,info.mem_free,info.mem_cached,info.swap_cached,info.swap_total,info.swap_free);          
      fflush(stdout);
      int j = 0;
      sleep_for(std::chrono::milliseconds(1000));
      system("clear");
    }
    i++;
  }
  // info = getSystemInfo();
  // printf("总内存为:%d\t\n",info.mem_total); 
  // printf("%d    %d    %d      %d    %d    %d   %d      %d       %d      %d",info.cpu_user,info.cpu_nice,info.cpu_system,info.cpu_idle,info.mem_total,info.mem_free,info.mem_cached,info.swap_cached,info.swap_total,info.swap_free);
  return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...