我使用 /proc/diskstats 来获取读取和写入的扇区数。我想将此数字转换为字节,因此我查找扇区大小。我使用了如何在 Linux 中查找 floppy\ CD 扇区大小?获取磁盘 sda、sda1 和 sda2 的扇区大小,但它失败并出现以下错误:文件 /dev/sda 上的 ioctl 失败,错误无效参数 文件 /dev/sda1 上的 ioctl 失败,错误 设备的 ioctl 不合适,对于sda2。将感谢您的帮助。谢谢
struct hd_driveid id;
string fileName = "/dev/";
fileName += diskName;
int fd;
fd = open(fileName.c_str(), O_RDONLY|O_NONBLOCK);
if (fd < 0) {
LogError("Cannot open file " << fileName);
}
else
{
if (ioctl(fd, HDIO_GET_IDENTITY, &id) < 0) {
LogError("failed ioctl on with error " << strerror(errno));
} else {
currBytesPerSector = id.sector_bytes;
}
close(fd);
}