On Friday 24 June 2005 11:51, Mihai Maties wrote: > Ma intereseaza sa calculez spatiul (real) ocupat de un fisier si sa obtin > un rezultat similar cu cel de la rularea comenzii: > > du --block-size=1 /my/file > 8192 /my/file > > Daca folosesc "stat" am urmatorii parametri care m-ar ajuta: > > $size total size of file, in bytes > $blksize preferred block size for file system I/O > $blocks actual number of blocks allocated > > Exemplu: daca fisierul are 5556 bytes, valorile celor 3 variabile ar fi: > > $size = 5556 > $blksize = 4096 > $blocks = 16 > > Cum obtin eu din aceste 3 valori rezultatul care ma intereseaza si anume > "8192" ? > > Eu vad 2 variante, dar nu am incredere in nici una din ele: > > 1. $rezultat = ceil($size / $blksize) * $blksize > ? e OK formula asta pe orice filesystem ? > > 2. $rezultat = $blocks * 512 > ? e bine sa hardcodez marimea unui bloc la 512 bytes ?
Am aflat intre timp si raspunsul uitandu-ma in sursele de la "du". Am sa detaliez in continuare in caz ca mai intereseaza pe cineva: In functie de platforma, constanta ST_NBLOCKSIZE folosita la calcularea numarului de block-uri ocupat de un fisier are diferite valori: - pe HPUX e 1024 bytes - pe AIX PS/2 e 4096 bytes - in rest e 512 bytes In concluzie nu e tocmai recomandata hardcodarea valorii in "formula", dar tinand cont ca programul nu va rula pe una din platformele "deosebite" pot folosi fara grija formula: $blocks * 512. Mihai -- This message was scanned for spam and viruses by BitDefender. For more information please visit http://www.bitdefender.com/ --- Detalii despre listele noastre de mail: http://www.lug.ro/
