ruru605 发表于 2006-12-23 02:27:55

问个读文件的问题

请教:
    我知道用cat /proc/cpuinfo可以看到cpu的所有信息,但是如果我想用C或者C++语言写个程序运行返回其中cache size或者model name的值应该如何做呢?

十分感谢
提前祝大家圣诞快乐

mozilla 发表于 2006-12-23 10:28:55

cpuid之类的指令可以取这些信息吧
你可以看看内核里是怎么实现的

loveccy 发表于 2006-12-23 13:17:58

fopen
fread
strstr
sscanf

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

ruru605 发表于 2006-12-24 01:03:20

谢谢楼上,用楼上的意见写的代码,希望指点:
#include <string.h>
#include <stdio.h>
main()
{

      FILE *fp;
      char buffer;
      size_t bytesRead;
      char *match;
      char model_name;

      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 = '\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;
}
:P

ruru605 发表于 2006-12-24 01:04:07

其中感觉sscanf这个函数挺麻烦的

loveccy 发表于 2006-12-24 11:55:02

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

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

char model_name; ──这小了点儿吧? :roll:
页: [1]
查看完整版本: 问个读文件的问题