打印

问个读文件的问题

问个读文件的问题

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

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

TOP

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

TOP

fopen
fread
strstr
sscanf

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

TOP

谢谢楼上,用楼上的意见写的代码,希望指点:
#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;
}

TOP

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

TOP

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

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

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

TOP