Portál AbcLinuxu, 10. května 2025 01:19

Dotaz: Velké soubory

Jardík avatar 26.3.2006 15:03 Jardík | skóre: 40 | blog: jarda_bloguje
Velké soubory
Přečteno: 57×
Odpovědět | Admin
Začínám programovat v GTK a chtěl jsem si napsat jednoduchý prográmek pro výpočet MD5. Nejprve jsem používal pro otevírání/čtení souboru funkce fopen/fread/fclose a program fungoval, jak měl. Když jsem ale pak vybral k vypočtení md5 soubor o velikosti 2,4GB, tak mi fopen vrátil nulový ukazatel. Zkusil jsem tedy použít systémová volání nějak takto:
//začni md5
ssize_t cnt;
int input = open( "nějaký soubor", O_RDONLY | O_LARGEFILE );
while( true )
{
    cnt = read( input, (void*)buffer, 512 );
    if( cnt == 0 ) break; //EOF
    if( cnt < 0 ) return 1; //ERROR
    //aktualizuj md5
}
//dokonči md5
close( input );
Bohužel to nějak nefunguje. Pokud k tomu přidám vypisování informací o celkovém počtu načtených bytů, tak mi nesedí s velikostí souborů a můj program ukáže jiný md5 součet než program md5sum.
Věřím v jednoho Boha.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Luboš Doležel (Doli) avatar 26.3.2006 15:31 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Velké soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak zacházet s velkými soubory (co definovat apod.), viz man lseek64
Jardík avatar 26.3.2006 15:54 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Velké soubory
Jenže já v tom kódu nikde lseek/lseek64 nepoužívám, protože polohu v souboru měnit nepotřebuju. Čtu ten soubor od začátku pomocí fce read. Jenže žádný read64 jsem nenašel.
Věřím v jednoho Boha.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.