linux下怎么用c获取硬盘物理序列号?
真是一个头疼的问题linux下怎么用c获取硬盘物理序列号?哪位c高手知道?
什么redhat,ubuntu,salories,aix等等等等都能用的
硬盘类型可能是sata,也可能是scsi。
如果是raid,要获取主盘的物理序列号
不知道c高手们有没有一个通用的解决方案?谢谢了
物理序列号哦!
[ 本帖最后由 freish 于 2009-8-28 11:24 编辑 ]
#include <stdio.h> #include <sys/ioctl.h> #include <linux/hdreg.h> #include <sys/fcntl.h> int main() { struct hd_driveid id; int fd = open("/dev/sda", O_RDONLY|O_NONBLOCK); if (fd < 0) { perror("/dev/sda"); return 1; } if(!ioctl(fd, HDIO_GET_IDENTITY, &id)) { printf("Serial Number=%s\n",id.serial_no); } return 0; }