2009-09-28 20 views

cevap

8
Linux'ta

, sen taşınabilirlik endişe değilseniz (C sürücüler hakkında bilmiyor, bu yüzden bu tür özel kod unportable olacaktır), statfs() kullanmak aygıtın sysfs girişi. Bu cihazda /sys/block/sda/size

  • Mantıksal bölüm: Senin durumunda,

    1. tam cihaz (tüm bölümler ve bölüm tablosu) olarak /sys/block/sda/sda1/size

    cihaz henüz monte edilecek zorunda değildir.

  • +1

    Yukarıdakiler, statfs'ye iletilen yol "/ mnt" ise çalışır – Andrew

    0

    , bu exec: popen kullanarak

    df -h | grep -i /dev/sda1

    ve strtok ile sonuçlanan çizgi ayrıştırmak.

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

    Böyle bir şey yapmaktan kaçınmaya çalışıyorum. Uygulama gömülü bir platform üzerinde çalışıyor ve yukarıdakileri yapmak için çok fazla kaynak gerektiriyor. – Andrew

    +1

    '-h' muhtemelen girdi gereksizdir çünkü giriş program tarafından okunacaktır. '-i 'ayrıca büyük/küçük harfe duyarlıdır. Bunun dışında iyi bir LSB-uyumlu (örneğin taşınabilir) çözüm. –

    2

    Okuma ve bir sayı ayrıştırmak:

    İlgili konular