Я использовал/proc/diskstats, чтобы получить число секторов, прочитанных и написанных. Я хочу преобразовать это число в байты, поэтому я ищу размер сектора. Я использовал How to find floppy\ CD sector size in Linux?, чтобы получить размер сектора дисков sda, sda1 и sda2, но он не справляется со следующими ошибками: не удалось ioctl на файле/dev/sda с ошибкой Неверный аргумент не удалось ioctl на файле/dev/sda1 с ошибкой Несоответствующий ioctl для устройства и то же самое для sda2. Поблагодарите вашу помощь. БлагодаряНе удалось выполнить ioctl на определенных дисках
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);
}
Я редактировал код в вопросе вы связаны, он был недействителен и пропусканием дикий указатель вокруг. – nos
Я уже делал изменения для меня раньше, и это все еще не сработало. – walla
Связано это с [этот вопрос] (http://askubuntu.com/questions/103065/why-do-i-get-hdio-get-identity-failed-message-when-booting-with-external-usb- час)? – Petesh