问个读文件的问题
请教:我知道用cat /proc/cpuinfo可以看到cpu的所有信息,但是如果我想用C或者C++语言写个程序运行返回其中cache size或者model name的值应该如何做呢?
十分感谢
提前祝大家圣诞快乐 cpuid之类的指令可以取这些信息吧
你可以看看内核里是怎么实现的 fopen
fread
strstr
sscanf
这样不是很简单吗?不用看内核里是怎么做的吧。
而且用户程序不能像内核那样吧,直接跟机器打交道。 谢谢楼上,用楼上的意见写的代码,希望指点:
#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 其中感觉sscanf这个函数挺麻烦的 :neutral: 指点我可不敢。两年多以前我就买了 ``Kernel Projects for Linux'' ,信誓旦旦地说,又学英语又学 Linux ,这世界太美好了……现在我连第五个实验都没看完呢,真正做了的就是前两个……不过英语倒真是多亏了 Linux 啊,我从没抱着课本和词典溜达过。
那个 sscanf ,我想的也是用 %[^\n] 。你要是有更简单的办法了就告诉我一声啊。
char model_name; ──这小了点儿吧? :roll:
页:
[1]