Segfault(核心转储) - 无法运行lldb

时间:2017-02-13 03:54:04

标签: c

我正在尝试编写一个从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();
}

1 个答案:

答案 0 :(得分:0)

您无法执行任何边界验证。令牌是否有元素'4'?

printf("%s\n", token[4]);

尝试

for ( char *token = strtok( element , "\n" ); token != NULL; token = strtok( NULL, "\n" ) )
{
  puts( token );
}