2017-01-28 2 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. 반복 1-3 단계를 몇 초 동안 파일
  4. 대기를 FCLOSE. 다른 번호가 있으면 해당 시간 동안 디스크가 활성 상태였습니다.
+0

나는 sda2가 전혀 없지만 sda/stat를 확인한 후 드라이브를 회전하면 차이가 있음을 알 수 있습니다. 읽기 값은 모두 올라 갔지만 드라이브가 대기 상태로 돌아간 후에도 변경되지 않았습니다. –

관련 문제