Я использовал / proc / diskstats, чтобы узнать количество прочитанных и записанных секторов. Я хочу преобразовать это число в байты, поэтому ищу размер сектора. Я использовал Как узнать размер сектора дискеты \ CD в Linux?, чтобы получить размер сектора дисков sda, sda1 и sda2, но это не удается со следующими ошибками: сбой ioctl в файле / dev / sda с ошибкой Недопустимый аргумент сбой ioctl в файле / dev / sda1 с ошибкой Несоответствующий 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);
}