有不少朋友问在qnx下如何获取内存及cpu占有率等等,想到两年前自己做过一个类似windows里的任务管理器的东东,里面有一部分就是获取内存,cpu,磁盘及进程信息的GUI程序,记得也美其名曰xxxTaskMan。把里面的关键代码写下来供兄弟们参考。界面部分就不公布了,无非是一些窗口,按钮,list等等。
一、ProcInfo.h
- // ProcInfo.h: interface for the CProcInfo class.
- //
- //
- #if !defined(AFX_PROCINFO_H__E3782DFC_59DE_45FC_BF1F_D8C8BF0181C1__INCLUDED_)
- #define AFX_PROCINFO_H__E3782DFC_59DE_45FC_BF1F_D8C8BF0181C1__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- class CProcInfo
- {
- public:
- CProcInfo();
- virtual ~CProcInfo();
- public:
- static void InitSysInfo();
- static void ClearSysInfo();
- static int GetFreeMem();
- static int GetTotalMem();
- static int GetFreeMemPercent();
- static void GetSysInfo(int &TotalMem,int &CpuSpeed,int &BootTime,char *pszCpuName);
- static void GetDiskInfo(int &Total,int &Free);
- static int GetFreeDiskPercent();
- static int normalize_data_size(int &size);
- static bool GetProcName(const int iPid,char *pszProcName,int &fd);
- static bool GetSingleProcInfo(const int fd,long &StartTsp,int &CpuTime,int &MemSize);
- private:
- static int s_iTotalMem;
- static int s_iCpuSpeed;
- static int s_iBootTime;
- static char s_strCpuName[32];
- static int s_hSysProc;
- static int s_hRootFile;
- };
- #endif // !defined(AFX_PROCINFO_H__E3782DFC_59DE_45FC_BF1F_D8C8BF0181C1__INCLUDED_)
使用方法,启动后先调用一次InitSysInfo(),结束后调用一次ClearSysInfo()进行清理。
2、ProcInfo.cpp代码
- // ProcInfo.cpp: implementation of the CProcInfo class.
- //
- //
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <fcntl.h>
- #include <string.h>
- #include <unistd.h>
- #include <sys/iofunc.h>
- #include <sys/dispatch.h>