当前位置: 技术问答>linux和unix
请问:在linux下面怎么在程序里写代码察看cpu和内存使用情况
来源: 互联网 发布时间:2015-06-02
本文导语: 如果采用读文件的方式,那么在/proc下面的文件中哪些是关于cpu使用情况的? 只读一个给定线程号的,或者读取总数的都行。 谢谢! | int GetCpuEffi(double* pdEffi) { int sum; int idle; FILE* fp; char va1[12]; ...
如果采用读文件的方式,那么在/proc下面的文件中哪些是关于cpu使用情况的?
只读一个给定线程号的,或者读取总数的都行。
谢谢!
只读一个给定线程号的,或者读取总数的都行。
谢谢!
|
int GetCpuEffi(double* pdEffi)
{
int sum;
int idle;
FILE* fp;
char va1[12];
char va2[12];
char va3[12];
char va4[12];
char val1[12];
char val2[12];
char val3[12];
char val4[12];
char line[128];
/* open "/proc/stat" file */
if ( (fp = fopen("/proc/stat", "r")) == NULL ) {
// fprintf(stderr, "%s %d Fail to open /proc/stat file n", __FILE__, __LINE__);
return -1;
}
/* read first line */
if ( fgets(line, 128, fp) == NULL ) {
/* read error */
fclose(fp);
return -1;
}
/* get parameter */
GetLineArg(line, va1, 1);
GetLineArg(line, va2, 2);
GetLineArg(line, va3, 3);
GetLineArg(line, va4, 4);
/* close file */
fclose(fp);
/* delay */
sleep(1);
/* reopen "/proc/stat" file */
if ( (fp = fopen("/proc/stat", "r")) == NULL ) {
// fprintf(stderr, "%s %d Fail to open /proc/stat file n", __FILE__, __LINE__);
return -1;
}
/* read first line */
if ( fgets(line, 128, fp) == NULL ) {
/* read error */
fclose(fp);
return -1;
}
/* get parameter */
GetLineArg(line, val1, 1);
GetLineArg(line, val2, 2);
GetLineArg(line, val3, 3);
GetLineArg(line, val4, 4);
/* close file */
fclose(fp);
/* calculate CPU efficiency */
idle = atoi(val4) - atoi(va4);
sum = atoi(val1) - atoi(va1) + atoi(val2) - atoi(va2) + atoi(val3) - atoi(va3) + atoi(val4) - atoi(va4);
*pdEffi = 1.0000 - (double)idle / (double)sum;
return 0;
}