LostOblivion Skrevet 3. april 2009 Del Skrevet 3. april 2009 (endret) Hei, Jeg driver å lager et enkelt filoverføringsprogram med sockets i Linux og lurte på om det var noen "spesiell" integer datatype for filstørrelser? Bare for å være konsistent, mener jeg... La meg legge til at jeg prøver å teste det med svært store filer også...opp til 6.2 GB. Endret 3. april 2009 av LostOblivion Lenke til kommentar
zotbar1234 Skrevet 3. april 2009 Del Skrevet 3. april 2009 Jeg driver å lager et enkelt filoverføringsprogram med sockets i Linux og lurte på om det var noen "spesiell" integer datatype for filstørrelser? Bare for å være konsistent, mener jeg... Filstørrelser? Vel: * ftell() (C99) sier long. * lseek() (POSIX) bruker off_t. * APUE nevner (2.7, figur 2.8) at off_t brukes til "file sizes and offsets (signed)". En litt interessant ting er selvsagt om det filsystemet og kjernen du bruker støtter filer over 2 (evt. 4) GB. Lenke til kommentar
LostOblivion Skrevet 3. april 2009 Forfatter Del Skrevet 3. april 2009 Fant ut av det. For å kunne jobbe med store filer, må man jobbe på enten et 64-bit OS, eller et OS som har et LFS-API Med andre ord 64-bit versjoner av funksjoner som jobber med filer, slik som open blir open64, osv. Man kan altså benytte seg av Large File Support på 32-bit OSer hvis de har støtte for det. Man kan skru på LFS ved enten å bruke LFG-APIet direkte ved direkte kall til open64, osv, eller, hvis man benytter seg av gcc, gi gcc opsjonen -D_FILE_OFFSET_BITS=64. Da vil alle kall til open, byttes ut med open64, osv. Det er viktig at man bruker off_t og ikke int her altså, når man henviser til filstørrelser og -posisjoner. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå