//虚拟机大都是SCSI硬盘,获取硬盘序列号的方法不知道,但是本人将虚拟机的硬盘类型更改为IDE类型,通过下面的代码获取成功是00000000000000001
<span style="font-family: Arial, Helvetica, sans-serif;">#include <stdio.h></span>
#include <string.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/hdreg.h>
int getHardSerialNo(char *info)
{
        struct hd_driveid id;
        int fd = open("/dev/sda", O_RDONLY|O_NONBLOCK);
        if (fd < 0) {
                fd = open("/dev/sda", O_RDONLY|O_NONBLOCK);
                if (fd < 0) return 1;
        }
        if(!ioctl(fd, HDIO_GET_IDENTITY, &id))
        {
                strcpy(info,id.serial_no);
        }
		printf("%s\n",info);
        return 0;
}
int main()
{
	char info[50];
	getHardSerialNo(info);
	printf("****%s\n",info);
	return 0;
}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐