linux 系统操作
1.取一个进程的内存,cpu等信息
ps -p 进程ID -o pid,pcpu,vsz,thcount,sz|grep -v CPU
2.获取CPU的个数:
cat /proc/cpuinfo |grep processor|wc -l
3.获取某一个进程的句柄
int getPrFdNum(const string& sPid, int& fdNum) { fdNum = 0; if (sPid.empty()) { ErrorOut("getPrFdNum: failed ,pid is null!"); return -1; } string sPath = string("/proc/") + sPid + string("/fd"); ACE_Dirent_Selector sds; int iStatus = sds.open(sPath.c_str(),NULL, NULL); if (iStatus <= 0) { ErrorOut("getPrFdNum: failed to get %s 's handls!",sPath.c_str()); return -1; } if(sds.length() >= 2) // Subtract . and .. { fdNum = sds.length()-2; } else { ErrorOut("getPrFdNum: %s 's handls count is less than 2!", sPath.c_str()); } sds.close(); // Notice: If sds.close() is missed, memory leak will occur! return 0; }
4.用c++取程序的虚拟内存
long getVMemoryForNX() { long vsz = 0; #ifndef WIN32 pid_t mypid = getpid(); std::stringstream ss; ss << mypid; std::string pid = ss.str(); printf("pid=%s\n", pid.c_str()); //long useMemKB = 0; std::string strcmd; strcmd += "ps -o vsz -p "; strcmd += pid; strcmd += "|/usr/bin/grep -v VSZ"; FILE *pfile = popen(strcmd.c_str(), "r"); if (NULL == pfile) { printf("LinuxPrStat::getProcInfo run %s failure!", strcmd.c_str()); } else { while( !feof(pfile) ) { char strresult[1024] = {0}; fread(strresult, 1, 1024, pfile); //printf("strsult=%s", strresult); if (strlen(strresult)) { vsz = atol(strresult); } } pclose(pfile); } #endif return vsz; }
相关推荐
farwang 2020-11-25
星愿心愿 2020-11-24
tianhuak 2020-11-24
zhjn0 2020-11-24
昭君出塞 2020-11-23
bluecarrot 2020-11-23
linuxwcj 2020-10-21
以梦为马不负韶华 2020-10-20
彼岸随笔 2020-10-20
yutou0 2020-10-17
applecarelte 2020-10-16
ourtimes 2020-10-16
waterhorse 2020-09-19
MRFENGG 2020-11-11
rainandtear 2020-10-30
kyssfanhui 2020-10-20
liuhangtiant 2020-10-20