QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1809|回复: 5

问个读文件的问题

[复制链接]
发表于 2006-12-23 02:27:55 | 显示全部楼层 |阅读模式
请教:
    我知道用cat /proc/cpuinfo可以看到cpu的所有信息,但是如果我想用C或者C++语言写个程序运行返回其中cache size或者model name的值应该如何做呢?

十分感谢
提前祝大家圣诞快乐
发表于 2006-12-23 10:28:55 | 显示全部楼层
cpuid之类的指令可以取这些信息吧
你可以看看内核里是怎么实现的
回复

使用道具 举报

发表于 2006-12-23 13:17:58 | 显示全部楼层
fopen
fread
strstr
sscanf

这样不是很简单吗?不用看内核里是怎么做的吧。
而且用户程序不能像内核那样吧,直接跟机器打交道。
回复

使用道具 举报

 楼主| 发表于 2006-12-24 01:03:20 | 显示全部楼层
谢谢楼上,用楼上的意见写的代码,希望指点:
#include <string.h>
#include <stdio.h>
main()
{

      FILE *fp;
      char buffer[1024*5];
      size_t bytesRead;
      char *match;
      char model_name[40];

      fp = fopen("/proc/cpuinfo","r");
      if (fp == 0)
          {
         printf("open /proc/cpuinfo file error\n");
         return 0;
      }

       bytesRead = fread(buffer, 1, sizeof(buffer),fp);

       fclose(fp);
       if (bytesRead == 0 || bytesRead == sizeof(buffer))
           {
       printf("readBytes NULL OR large than buffer \n");
       return 0;
       }
       buffer[bytesRead] = '\0';

       match = strstr (buffer, "model name");
       if (match == NULL)
           {
       printf("match error\n");
       return 0;
       }
            sscanf (match ,"model name : %50[^\n]", &model_name);
        printf( "model name :%s\n",model_name);

                return 0;
}
回复

使用道具 举报

 楼主| 发表于 2006-12-24 01:04:07 | 显示全部楼层
其中感觉sscanf这个函数挺麻烦的
回复

使用道具 举报

发表于 2006-12-24 11:55:02 | 显示全部楼层
:neutral: 指点我可不敢。两年多以前我就买了 ``Kernel Projects for Linux'' ,信誓旦旦地说,又学英语又学 Linux ,这世界太美好了……现在我连第五个实验都没看完呢,真正做了的就是前两个……不过英语倒真是多亏了 Linux 啊,我从没抱着课本和词典溜达过。

那个 sscanf ,我想的也是用 %[^\n] 。你要是有更简单的办法了就告诉我一声啊。

char model_name[40]; ──这小了点儿吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 02:28 , Processed in 0.054883 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表