我正在尝试编写一个从proc中提取信息的程序。现在我正试图从cpuinfo获取处理器类型。我的代码编译,但我得到一个段错(核心转储)。我无法让lldb运行调试。这是我的代码:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
char cpuinfo()
{
char element[400];
FILE* fp;
fp = fopen("/proc/cpuinfo", "r");
int token_count = 0;
if (fgets(element, 400, fp) != NULL)
{
char *token;
token = strtok(element, "\n");
printf("%s\n", token[4]);
}
fclose(fp);
return(0);
}
int main(int argc, char *argv[])
{
printf("Hello world\n");
cpuinfo();
}
答案 0 :(得分:0)
您无法执行任何边界验证。令牌是否有元素'4'?
printf("%s\n", token[4]);
尝试
for ( char *token = strtok( element , "\n" ); token != NULL; token = strtok( NULL, "\n" ) )
{
puts( token );
}