2010-06-27 3 views

답변

2

"#include <hdreg.h>"struct hd_driveid을 얻으려면 ioctl HDIO_GET_IDENTITY을 사용하십시오.
이 구조에서는 x->sector_bytes 필드가 섹터 크기입니다.

#include <stdlib.h> 
#include <stdio.h> 
#include <sys/ioctl.h> 
#include <linux/hdreg.h> 
#include <fcntl.h> 
#include <errno.h> 
#include <string.h> 
#include <cctype> 
#include <unistd.h> 

int main(){ 
    struct hd_driveid id; 
    char *dev = "/dev/hdb"; 
    int fd; 

    fd = open(dev, O_RDONLY|O_NONBLOCK); 
    if(fd < 0) { 
     perror("cannot open"); 
    } 
    if (ioctl(fd, HDIO_GET_IDENTITY, &id) < 0) { 
     close(fd); 
     perror("ioctl error"); 
    } else { 
     close(fd); 
     printf("Sector size: %du\n", id.sector_bytes); 
    } 
} 
+0

대단히 감사합니다. 하나의 질문인데 왜 O_NONBLOCK 플래그가 필요합니까? – IUnknownPointer

+0

여기를 참고하십시오 : http://opengroup.org/onlinepubs/007908799/xsh/open.html – clyfe

+0

안녕하세요, @clyfe, 작동하지 않습니다 ... ioctl은 항상 오류를 반환합니다. – IUnknownPointer

관련 문제