Jo precis, nu börjar jag bli lite klarare och egentligen kan vi glömma
ls i det här avseendet, mitt problem är att jag inte begriper hur
du räknar. Att jag tog med
ls var egentligen lite bara för att kunna förklara problemet.
Det är så att jag har ett program i C, som jag gör
opendir(),
readdir() etc. och hur jag än summerar
stbuf.st_size och/eller
stbuf.st_blocks*512 så lyckas jag inte få samma resultat som kommandot
du. Jag har provat med att bara summera filer som har flaggan
DT_REG (vanliga filer) satt och jag har provat med att summera dem plus de som har
DT_DIR (direcories) satt. Med
stbuf.st_size får jag ju fram den storlek som filerna använder och med
stbuf.st_blocks*512 så får jag ju fram den storlek som är allokerad på disken.
Jag har summerat:
1) Alla
DT_REG plus alla
DT_DIR, genom att använda mig av
stbuf.st_size vilket ger den använda storleken för alla vanliga filer plus directories.
2) Alla
DT_REG plus alla
DT_DIR, genom att använda mig av
stbuf.st_blocks*512 vilket ger den allokerade storleken för alla vanliga filer plus directories.
3) Alla
DT_REG, genom att använda mig av
stbuf.st_size vilket ger den använda storleken för alla vanliga filer.
Men, jag lyckas inte få fram samma summa som kommandot
du ger på något sätt. Symboliska länkar, pipes, blockfiler etc. finns inte i det aktuella directoryt utan det är bara vanliga filer och directories...
Självfallet kan jag lägga ned en dag eller så på att läsa
du.c i
coreutils och sätta mig in i exakt hur den arbetar, men jag tänkte bara att det kanske fanns någon som kunde komma med ett snabbt enkelt svar...
Tack ändå och kommer du på något bra så mig gärna...
