下面是一个示例代码,使用ioctl函数和HDIO_GET_DMA命令来获取SATA传输速度:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/hdreg.h>
int main() {
int fd;
struct hd_driveid id;
// 打开设备文件(例如:/dev/sda)
fd = open("/dev/sda", O_RDONLY);
if (fd < 0) {
perror("无法打开设备文件");
exit(1);
}
// 发送HDIO_GET_IDENTITY命令获取硬盘信息
if (ioctl(fd, HDIO_GET_IDENTITY, &id) != 0) {
perror("ioctl失败");
close(fd);
exit(1);
}
// 获取SATA传输速度信息
unsigned short sata_speed = id.current_speed;
printf("SATA传输速度: %u\n", sata_speed);
close(fd);
return 0;
}
请注意,此代码需要以root权限运行才能访问设备文件并执行ioctl操作。另外,请将/dev/sda
替换为实际的设备文件路径。
内容由零声教学AI助手提供,问题来源于学员提问