導航:首頁 > 編程系統 > linuxc獲取cpu序列號

linuxc獲取cpu序列號

發布時間:2023-03-17 17:19:07

Ⅰ C語言 編程實現獲取cpu信息

耐心看看啊,運行通過啦,希望對你有幫助啊!
#include<stdio.h>
unsigned int veax;
unsigned int vebx;
unsigned int vedx;
unsigned int vecx;
//執行CPUID指令
void cpuid(unsigned int veax1)
{

_asm{

mov eax,veax1

cpuid

mov veax,eax

mov vebx,ebx

mov vecx,ecx

mov vedx,edx

}
}

//做移位操作,把寄存器中的ASCII碼,以字元形式輸出
void LeftMove(unsigned int var)
{
printf("%c",var);
for(int i=0;i<3;i++)
{
var=(var>>;
printf("%c",var);
}
}

//做移位操作,把寄存器中的值以「%d」形式輸出
void LM(unsigned int var)
{
printf("%d",var);
for(int i=0;i<3;i++)
{
var=(var>>;
printf("%d",var);
}
}

//得到CPU的生產廠商(當EAX值為0時),依次存放在EBX,EDX,ECX中
void getCpuName()
{
cpuid(0);
LeftMove(vebx);
LeftMove(vedx);
LeftMove(vecx);
printf("\
";
}

//得到CPU的商標,當EAX中的值為0x80000003和0x80000004時分別返回16個字元,組成商標
//依次存放在EAX,EBX,ECX,EDX中
void getCpuBrand()
{
for(int j=0;j<2;j++)
{
cpuid(0x80000003+j);
LeftMove(veax);
LeftMove(vebx);
LeftMove(vecx);
LeftMove(vedx);
}
printf("\
";
}

//獲得CPU的特性,參數是eax = 1,返回值放在edx和ecx,通過驗證edx或者ecx的某一個bit,
//可以獲得CPU的一個特性是否被支持。比如說,edx的bit 32代表是否支持MMX,
//edx的bit 28代表是否支持Hyper-Threading,ecx的bit 7代表是否支持speed sted。
void getCpuFeature()
{//由於特性太多,無法一一編寫,需要的時候再寫,方法是一樣的。

}

//獲得CPU序列號,獲得序列號需要兩個步驟,首先用eax = 1做參數,返回的eax中存儲序列號的高兩個word
//用eax = 3做參數,返回ecx和edx按從低位到高位的順序存儲前4個WORD。
void getCpuSeris()
{
cpuid(1);
LM(veax);
cpuid(3);
LM(vecx);
LM(vedx);
printf("\
";
}
void main()
{
getCpuName();
getCpuBrand();
getCpuSeris();
}

Ⅱ 如何獲取cpu序列號

一、CPU都有一個唯一的ID號,稱CPUID,是在製造CPU的時候,由廠家置入到CPU內部的回。

二、查看方法:答

1、右點開始,選運行,並輸入CMD。

三、作用和意義:

由於CPU外在的所有標記、符號,都是可以人為打磨,而CPUID卻是終身不變的,只能用軟體讀出ID號;因此,利用這個原理,CPU ID工具可以顯出CPU的確切信息,包括移動版本、主頻、外頻、二級緩存等關鍵信息,從而查出超頻的CPU,並且醒目地顯示出來。

Ⅲ 如何用C語言獲取硬碟或主板或CPU的序列號

獲取CPU序列號要使用 匯編指令

比較麻煩

static DWORD g_eax; // 存儲返回的eax
static DWORD g_ebx; // 存儲返回的ebx
static DWORD g_ecx; // 存儲返回的ecx
static DWORD g_edx; // 存儲返回的edx

void Executecpuid(DWORD veax)
{
asm("cpuid"
:"=a"(g_eax),
"=b"(g_ebx),
"罩耐=c"(g_ecx),
"=d"(g_edx)
:"a"(g_eax));
}
int isSupport;
void GetSerialNumber(WORD nibble[6])
{
Executecpuid(1); // 執行物型春cpuid,參數為 eax = 1
isSupport = g_edx & (1<<18); // edx是否租盯為1代表CPU是否存在序列號
if (FALSE == isSupport) // 不支持,返回false
{
return ;
}
Executecpuid(3); // 執行cpuid,參數為 eax = 3
memcpy(&nibble[4], &g_eax, 4); // eax為最高位的兩個WORD
memcpy(&nibble[0], &g_ecx, 8); // ecx 和 edx為低位的4個WORD

}

linux下怎麼用c獲取硬碟物理序列號

1、在Linux系統中通過C語言獲取硬碟序列號,可以藉助於ioctl()函數,該函數原型如下:

intioctl(intfd,unsignedlongrequest,...);
ioctl的第一個參數是文件標識符,用open()函數打開設備時獲取。
ioctl第二個參數為用於獲得指定文件描述符的標志號,獲取硬碟序列號,一般指明為HDIO_GET_IDENTITY。
ioctl的第三個參數為一些輔助參數,要獲取硬碟序列號,需要藉助於structhd_driveid結構體來保存硬碟信息,該結構體在Linux/hdreg.h中,structhd_driveid的聲明如下
structhd_driveid{
unsignedshortconfig;/lotsofobsoletebitflags*/
unsignedshortcyls;/*Obsolete,"physical"cyls*/
unsignedshortreserved2;/*reserved(word2)*/
unsignedshortheads;/*Obsolete,"physical"heads*/
unsignedshorttrack_bytes;/*unformattedbytespertrack*/
unsignedshortsector_bytes;/*unformattedbytespersector*/
unsignedshortsectors;/*Obsolete,"physical"sectorspertrack*/
unsignedshortvendor0;/*vendorunique*/
unsignedshortvendor1;/*vendorunique*/
unsignedshortvendor2;/*Retiredvendorunique*/
unsignedcharserial_no[20];/*0=not_specified*/
unsignedshortbuf_type;/*Retired*/
unsignedshortbuf_size;/*Retired,512byteincrements
*0=not_specified
*/
……
};


2、源代碼如下

#include<stdio.h>
//ioctl()的聲明頭文件
#include<sys/ioctl.h>
//硬碟參數頭文件,hd_driveid結構聲明頭文件
#include<linux/hdreg.h>
//文件控制頭文件
#include<sys/fcntl.h>
intmain()
{
//用於保存系統返回的硬碟數據信息
structhd_driveidid;
//這里以第一塊硬碟為例,用戶可自行修改
//用open函數打開獲取文件標識符,類似於windows下的句柄
intfd=open("/dev/sda",O_RDONLY|O_NONBLOCK);
//失敗返回
if(fd<0){
perror("/dev/sda");
return1;}
//調用ioctl()
if(!ioctl(fd,HDIO_GET_IDENTITY,&id))
{
printf("SerialNumber=%s ",id.serial_no);
}
return0;
}

編譯完成後,執行效果如下:

Ⅳ linux如何查看伺服器序列號

1、單獨查看伺服器的序列號
[root@localhost ~]# dmidecode -t system | grep 'Serial Number'
Serial Number: 2102310YPY10J30*****

2、單獨查看伺服器型號
[root@localhost ~]# dmidecode | grep "Proct"
Proct Name: PowerEdge R730
Proct Name: 0WCJNT

3、統一查看伺服器SN序列號和型號
[root@localhost ~]# dmidecode | grep "System Information" -A9 | egrep "Manufacturer|Proct|Serial"
Manufacturer: Huawei 廠商
Proct Name: RH2288 V3 型號
Serial Number: 2102310YPY10J3****** 序列號

4、查看內存條信息及使用情況(內存的插槽數,已經使用多少插槽.每條內存多大,下圖為16個內存插糟,用了12個插槽,每根內存條16G)《Linux就該這么學》一起學習linux
[root@localhost ~]# dmidecode -t memory | grep Size
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: No Mole Installed
Size: 16384 MB
Size: No Mole Installed
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: 16384 MB
Size: No Mole Installed
Size: 16384 MB
Size: No Mole Installed

Ⅵ 銀河麒麟系統查看cpu序列號

銀河麒麟系統查看cpu序列號基衫步驟:
1、在左側樹狀菜單點擊操作系統。
2、在右側可以清楚的看到產品密鑰,後慧鋒源面就是麒麟系統的授權碼了。
3、登錄到linux伺服器執行lsbrelease-a命令,即可查看所有版本信息,授權碼。
4、登錄到linux執行cat,etc,issue(切記前態cat後要空一格)即可看到版本信息。

Ⅶ hp linux如何查看設備序列號信息

當我們需來要獲取機器自硬體信息時,可使用linux系統自帶的dmidecode工具進行查詢。例:下面的Serial Number信息。

[root@az01node021 ~]# dmidecode -t 1
# dmidecode 2.11
SMBIOS 2.7 present.

Handle 0x0100, DMI type 1, 27 bytes
System Information
Manufacturer: Dell Inc.
Proct Name: PowerEdge R720xd
Version: Not Specified
Serial Number: FJ2SHY1
UUID: 4C4C4544-004A-3210-8053-C6C04F485931
Wake-up Type: Power Switch
SKU Number: SKU=NotProvided;ModelName=PowerEdge R720xd
Family: Not Specified

閱讀全文

與linuxc獲取cpu序列號相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接