栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Linux中使用C / C ++获取机器序列号和CPU ID

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Linux中使用C / C ++获取机器序列号和CPU ID

这是Linux内核似乎使用的内容:

static inline void native_cpuid(unsigned int *eax, unsigned int *ebx,          unsigned int *ecx, unsigned int *edx){                asm volatile("cpuid" : "=a" (*eax),   "=b" (*ebx),   "=c" (*ecx),   "=d" (*edx) : "0" (*eax), "2" (*ecx));}

然后可以将其用作例如:

#include <stdio.h>int main(int argc, char **argv){  unsigned eax, ebx, ecx, edx;  eax = 1;   native_cpuid(&eax, &ebx, &ecx, &edx);  printf("stepping %dn", eax & 0xF);  printf("model %dn", (eax >> 4) & 0xF);  printf("family %dn", (eax >> 8) & 0xF);  printf("processor type %dn", (eax >> 12) & 0x3);  printf("extended model %dn", (eax >> 16) & 0xF);  printf("extended family %dn", (eax >> 20) & 0xFF);    eax = 3;   native_cpuid(&eax, &ebx, &ecx, &edx);    printf("serial number 0x%08x%08xn", edx, ecx);}

这篇Wikipedia文章中有关如何使用该

CPUID
指令的很好参考。

编辑 Wikipedia文章说,序列号是随Pentium
III一起引入的,但是由于隐私问题,以后的型号中不再使用该序列号。在Linux系统上,您可以通过执行以下操作检查此功能(PSN位)是否存在:

grep -i --color psn /proc/cpuinfo

如果未显示任何内容,则您的系统不支持处理器序列号。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412259.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号