Linux下,获取硬盘序列号
Linux下,获取硬盘序列号,分为root权限和非root权限,
对于root权限用户
编程实现
#include <stdio.h>
#include <string.h>
#include <sys/ioctl.h>
#include <linux/hdreg.h>
#include <fcntl.h>
#include <stdlib.h>
#include <ctype.h>
static int getdiskid(char *diskid)
{
int fd;
struct hd_driveid hid;
fd = open("/dev/sda", O_RDONLY);
if (fd < 0)
{
sprintf(diskid, "%s", "open error");
return -1;
}
if (ioctl(fd, HDIO_GET_IDENTITY, &hid) < 0)
{
sprintf(diskid, "%s", "ioctl error");
return -1;
}
close(fd);
char tmp[sizeof(hid.serial_no)];
printf("%s", hid.serial_no);
sprintf(tmp, "%s", hid.serial_no);
int t = sizeof(hid.serial_no) - sizeof(diskid);
strncpy(diskid, tmp + t, sizeof(tmp));
return 0;
}
对于非root用户
脚本下查询实现
/sbin/udevadm info --query=property --name=sda