linux C 获取cpu数目
原创
©著作权归作者所有:来自51CTO博客作者vaynedu的原创作品,请联系作者获取转载授权,否则将追究法律责任
我们现在写的代码一定要考虑可移植性,就举一个很简单的例子,一个进程开启的线程数量与CPU个数相关,而不同的机器CPU的数目不同,当我们代码从一个机器移到另外一个机器的时候,我们就不要手工修改先关参数,直接写代码自动获取CPU数目从而自动生成合适的线程数目。
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int getcpunum() {
char buf[16] = {0};
int num;
FILE* fp = popen("cat /proc/cpuinfo |grep processor|wc -l", "r");
if(fp) {
fread(buf, 1, sizeof(buf) - 1, fp);
pclose(fp);
}
num = atoi(buf);
if(num <= 0){
num = 1;
}
return num;
}
int main(int argc, char *argv[])
{
printf("cpu num = %d\n", getcpunum());
return 0;
}
上述代码运行结果
linux下一切皆文件,很多内核的参数我们直接可以/proc目录下读到, 这个目录磁盘大小为0,因为/proc目录只有linux启动之后,才会生成,而且全部加载在内存中的。一般常用cpu、网络、fd、什么buf大小、什么限制之类相关参数。
如果有什么问题,欢迎讨论!!!