2017-01-28 7 views
1

Я хотел бы проверить, активен ли мой жесткий диск или нет, и установить переменную или логическое значение для дальнейшего использования в программе. У меня hdparm установлен и работает правильно, чтобы повернуть диск после определенного периода времени. Привод включен/dev/sda2 и автомонтируется при загрузке.Проверьте, активен ли hdd или нет в программе

Я читал о popen(), но я все еще не очень разбираюсь в синтаксических выводах в c. Есть ли другой способ сделать это?

Кроме того, вы также сможете проверить, находится ли он в режиме ожидания.

+0

Когда вы говорите «активно», вы имеете в виду «не в энергосберегающем режиме?». Или вы имеете в виду «обслуживание запросов на чтение или запись»? –

+0

Я имею в виду запрос на обслуживание. В качестве альтернативы я мог бы установить логическое значение, если оно находится в режиме ожидания, если это помогает. –

+0

@ EthanMorris Выберите один - ответы будут существенно отличаться. Кроме того, зачем вам нужно знать? – duskwuff

ответ

1

Вы можете просто прочитать «/ sys/block/sda2/stat». Для документации см. https://www.kernel.org/doc/Documentation/block/stat.txt. программы Вы должны работать так:

  1. Открыть "/ SYS/блок/sda2/стат" с FOPEN
  2. Использование sscanf для разбора поля 3 (чтение секторов) и поле 7 (записи секторов).
  3. fclose файл
  4. ждать в течение нескольких секунд
  5. Повторите шаги 1-3. Если у вас разные номера, диск был активен в течение этого времени.
+0

У меня нет sda2 вообще, но после проверки sda/stat и вращения диска я вижу разницу. Все прочитанные значения повысились, но остались неизменными после того, как диск вернулся в режим ожидания. –