欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用C语言实现linux下非root用户获取系统CPU的id

程序员文章站 2022-07-15 09:47:43
...
    #include <stdio.h>       
    char *cpu_id(char *id)  
    {  
        //char s[30];  
        unsigned   long   s1,s2,s3,s4;    
        char   sel;     
        asm volatile     
        ( "movl $0x01 , %%eax ; \n\t"  
        "xorl %%edx , %%edx ;\n\t"  
        "cpuid ;\n\t"   
        "movl %%edx ,%0 ;\n\t"  
        "movl %%eax ,%1 ; \n\t"  
        :"=m"(s1),"=m"(s2)  
        );        
        //printf("%08X-%08X-",s1,s2);  
        asm volatile     
        ("movl $0x03,%%eax ;\n\t"  
        "xorl %%ecx,%%ecx ;\n\t"  
        "xorl %%edx,%%edx ;\n\t"  
        "cpuid ;\n\t"  
        "movl %%edx,%0 ;\n\t"  
        "movl %%ecx,%1 ;\n\t"  
        :"=m"(s3),"=m"(s4)  
        );     
        // printf("%08X-%08X \n",s3,s4);     
        sprintf(id,"%08X-%08X-%08X-%08X",s1,s2,s3,s4);  
        printf("***%s***\n",id);  
        return id;  
    }  
    int   main(int   argc,   char*   argv[])     
    {     
        char id[30];  
        cpu_id(id);  
        printf("%s\n",id);  
        return   0;     
    }