2009-09-28 7 views

답변

8
리눅스에

, 당신은 이동성에 대해 걱정하지 않은 경우 (C가 드라이브에 대해 알고하지 않기 때문에 이러한 특정 코드는 인자를 취하지 것), statfs() 사용 장치의 sysfs 항목 이 장치 /sys/block/sda/size

  • 논리 파티션 : 귀하의 경우,

    1. 전체 장치 (모든 파티션 및 파티션 테이블)에서 /sys/block/sda/sda1/size

    장치는 아직 장착 할 필요가 없습니다.

  • +1

    statfs에 전달 된 경로가 "/ mnt"이면 위의 코드가 작동합니다 – Andrew

    0

    ,이 간부 인 : popen를 사용

    df -h | grep -i /dev/sda1

    strtok를로 결과 행을 구문 분석합니다.

    struct statfs fsb; 
    
        if(statfs("/mnt", &fsb) == 0) 
        printf("device has %ld blocks, each %ld bytes\n", fsb.f_blocks, fsb.f_bsize); 
    
    +0

    그런 일을 피하려고합니다. 응용 프로그램이 임베디드 플랫폼에서 실행 중이며 위의 작업을 수행하는 데 너무 많은 자원이 필요합니다. – Andrew

    +1

    입력이 프로그램에 의해 읽혀지기 때문에'-h'는 아마도 여기서 불필요합니다. '-i'도 대소 문자를 구별하므로 중복됩니다. 그것 이외의 - 좋은 LSB - 준수 (즉, 휴대용) 솔루션입니다. –

    2

    읽기와 숫자를 구문 분석 :

    관련 문제