当前位置:  技术问答>linux和unix

借这里的技术含量,小弟提问如下,希望高手留言

    来源: 互联网  发布时间:2015-09-04

    本文导语:  怎样在程序中获取主板上的信息,比如CPU的ID号和主频呀,PCI插槽有几个呀等等! 当然能获取的越详细就越好! 请各位高手留言 | 以下我所写的一个程序,你只需简单的修改一下就可以得到运...

怎样在程序中获取主板上的信息,比如CPU的ID号和主频呀,PCI插槽有几个呀等等!
当然能获取的越详细就越好!
请各位高手留言

|
以下我所写的一个程序,你只需简单的修改一下就可以得到运行的结果.     

    FILE* fp;
char buffer[256];
size_t bytes_read;
char* match ;
float clock_speed;
int processor_count , cache_size;
char tmp[10][128] ;
char vendor[128] , model_name[128] ;

// Read the entire contents of /proc/cpuinfo into the buffer.  
fp = fopen ("/proc/cpuinfo", "r");
bytes_read = fread (buffer, 1, sizeof (buffer), fp);
fclose (fp);
// Bail if read failed or if buffer isn’t big enough. 
if (bytes_read == 0 || bytes_read == sizeof (buffer))
{
fprintf(stderr,"buffer isn’t big enough!n");
}
// NUL-terminate the text. 
buffer[bytes_read] = '';

// Locate the line that starts with "processor". 
match = strstr (buffer, "processor");
if (match == NULL)
{
fprintf(stderr,"Don't locate the line processor!n");
}
else 
{
// Parse the line to extract the processor. 
sscanf (match, "processor : %d", &processor_count);
sprintf(tmp[0], "%d#",processor_count+1);
}

// Locate the line that starts with "vendor_id".
match = strstr (buffer, "vendor_id");
if (match == NULL)

fprintf(stderr,"Don't locate the line vendor id!n");
}
else
{
// Parse the line to extract the vendor_id.  
sscanf (match, "vendor_id : %s", vendor);
sprintf(tmp[1], "%s#", vendor); 


// Locate the line that starts with "model_name".
match = strstr (buffer, "model name");
if (match == NULL)

fprintf(stderr,"Don't locate the line model name!n");
}
else
{
// Parse the line to extract the model_name.  
sscanf (match, "model name : %s", model_name);
sprintf(tmp[2], "%s#", model_name);  


// Locate the line that starts with "cpu MHz". 
match = strstr (buffer, "cpu MHz");
if (match == NULL)
{
fprintf(stderr,"Don't locate the line cpu MHz!n");
}
else 
{
// Parse the line to extract the clock speed. 
sscanf (match, "cpu MHz : %f", &clock_speed);
sprintf(tmp[3], "%5.2fMHz#",clock_speed);
}

// Locate the line that starts with "cache size". 
match = strstr (buffer, "cache size");
if (match == NULL)
{
fprintf(stderr,"Don't locate the line cache size!n");
}
else 
{
// Parse the line to extract the cache size. 
sscanf (match, "cache size : %d", &cache_size);
sprintf(tmp[4], "%dKB#",cache_size);
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • VLAN(虚拟局域网)技术工作原理介绍
  • shtm是什么技术,jsp又是什么技术?
  • Oracle 10g和Oracle 11g网格技术介绍
  • 163.com的聊天室是使用推技术吗?还是别的技术?  
  • ​docker之轻量虚拟化技术——docker实战分享
  • 请问COM技术和WEB技术有什么区别和联系?在线等
  • 云计算之Docker容器技术如何落地?
  • linux中有哪些技术可以实现包过滤、内容过滤的技术?
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • 严正抗议:为什么微软技术有一个专区,而Java技术只有一个板块???
  • 什么是docker?Docker技术详细介绍
  • <java技术手册>与<java实例技术手册>这两本书怎么样?
  • 将要改变IT世界的的docker技术是什么?
  • 创立一个linux技术群,广招天下朋友,一起研究linux技术
  • Docker技术使用场景主要特性等相关资源整理
  • 在linux下 和windows对应的dll 的技术是什么啊? 也就是说;在linux下进行函数和类的封装 使用什么技术啊?
  • 跳槽是个技术活:我的两次跳槽经历
  • 请问<java核心技术I:基础技术>的光盘内容哪有下载?里面有个corejava的类库不知道在哪找
  • Oracle 数据库(oracle Database)性能调优技术详解
  • 《Red Flag Server 4 安全技术白皮书》你读过吗?问什么问题能体现我们的技术水平呢?呵呵。
  • ​什么是Docker以及docker的 诞生技术演进
  • 有线网络技术?无线网络技术?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3