abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    11.7. 16:44 | Komunita

    Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.

    Ladislav Hagara | Komentářů: 3
    11.7. 14:55 | Humor

    McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.

    Ladislav Hagara | Komentářů: 9
    11.7. 00:11 | Nová verze

    Byla vydána (𝕏) červnová aktualizace aneb nová verze 1.102 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.102 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    10.7. 21:00 | Bezpečnostní upozornění

    Byla vydána nová verze 2.4.64 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 8 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 4
    10.7. 15:22 | Nová verze

    Společnost xAI na síti 𝕏 představila Grok 4, tj. novou verzi svého AI LLM modelu Grok.

    Ladislav Hagara | Komentářů: 12
    10.7. 12:55 | Bezpečnostní upozornění

    Ministerstvo vnitra odhalilo závažný kyberincident v IT systému resortu. Systém, do kterého se dostal útočník bez oprávnění, byl odpojen a nedošlo k odcizení dat [𝕏].

    Ladislav Hagara | Komentářů: 16
    10.7. 11:55 | Humor

    Před rokem byla streamovací služba HBO Max přejmenována na Max. Dle managementu slovo HBO v názvu nebylo důležité. Včera byl Max přejmenován zpět na HBO Max. Kolik milionů dolarů to stálo? 😂

    Ladislav Hagara | Komentářů: 14
    10.7. 02:11 | Nová verze

    Byla vydána nová major verze 8.0.0 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata (Wikipedie). Přehled novinek v oficiálním oznámení a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    10.7. 01:11 | Nová verze

    Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.4. Přehled novinek s náhledy a videi v oznámení na blogu.

    Ladislav Hagara | Komentářů: 1
    10.7. 00:11 | IT novinky

    Instituce státní správy nebudou smět využívat produkty, aplikace, řešení, webové stránky a webové služby poskytované čínskou společností DeepSeek. Na doporučení Národního úřadu pro kybernetickou a informační bezpečnost rozhodla o jejich zákazu vláda Petra Fialy na jednání ve středu 9. července 2025.

    Ladislav Hagara | Komentářů: 8
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (27%)
     (7%)
     (3%)
     (1%)
     (1%)
     (4%)
    Celkem 388 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Dotaz: SIGSEGV pri kopirovani souboru pomoci fopen

    tomes.io avatar 5.1.2014 17:16 tomes.io | skóre: 12 | blog: tomesh
    SIGSEGV pri kopirovani souboru pomoci fopen
    Přečteno: 249×
    Napsal jsem si fci pro kopirovani vsech typu souboru. Kopiruji tedy binarne pomoci fopen. Nasledujici fce pracuje vetsinu casu spravne, ale obcas mi spadne se SIGSEGV a valgrind hlasi:
    Access not within mapped region at address 0x0
    ==26680==    at 0x3BD606CD90: fwrite (in /usr/lib64/libc-2.17.so)
    
    Je mozne, ze se nekdy nejak nekorektne otevre soubor pro psani? Premyslim, v cem to muze byt. Lze kod nejak osetrit tak, aby to bylo vzdy korektni?

    void send_file(char *source, char *destination) {
        FILE * filer, * filew;
        int numr, numw;
        char buffer[1024];
    
        if ((filer = fopen(source, "rb")) == NULL) {
            perror("open read file error.\n");
            //exit(1);
        }
    
        if ((filew = fopen(destination, "wb")) == NULL) {
            perror("open write file error.\n");
            //exit(1);
        }
    
        while (feof(filer) == 0) {
    
            if ((numr = fread(buffer, 1, 100, filer)) != 100) {
    
                if (ferror(filer) != 0) {
                    perror("read file error.\n");
                    //exit(1);
                } else if (feof(filer) != 0);
            }
    
            if ((numw = fwrite(buffer, 1, numr, filew)) != numr) {
                perror("write file error.\n");
                //exit(1);
            }
        }
    
        fclose(filer);
        fclose(filew);
    }
    

    Řešení dotazu:


    Odpovědi

    5.1.2014 18:32 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: SIGSEGV pri kopirovani souboru pomoci fopen

    A nejsou právě problémem ty zakomentované exit-y?, tedy dle hlášky zrovna ten ve fopen pro filew.
    U zapisovaného souboru je dobré kontroloval návratový kód fclose, moc se to sice nedělá, ale…

    Pozor příklad, tvrdě přepíše cílový soubor!
    #include <stdlib.h>
    #include <unistd.h>
    #include <stdio.h>
    
    void send_file(const char *source, const char *destination) {
        FILE * filer, * filew;
        int numr;
        const int SIZE_OF_BUFFER=1024;
        char buffer[SIZE_OF_BUFFER];
    
        if ((filer = fopen(source, "rb")) == NULL) {
            perror("open read file error.\n");
            exit(1);
        }
    
        if ((filew = fopen(destination, "wb")) == NULL) {
            perror("open write file error.\n");
            fclose(filer);
            exit(1);
        }
    
        while (feof(filer) == 0) {
    
            if ((numr = fread(buffer, 1, SIZE_OF_BUFFER, filer)) != SIZE_OF_BUFFER) {
    
                if (ferror(filer) != 0) {
                    perror("read file error.\n");
                    fclose(filer);
                    fclose(filew);
                    exit(1);
                }
            }
    
            if (fwrite(buffer, 1, numr, filew) != numr) {
                perror("write file error.\n");
                fclose(filer);
                fclose(filew);
                exit(1);
            }
        }
    
        if(fclose(filer) != 0)
          printf("read file - close error.\n");//has read-file been deleted ... ???
    
        if(fclose(filew) != 0)
          printf("write file - close error.\n");//flush C buffer fails
    
        //fsync ????
    
    }
    
    int main( int argc, const char* argv[] ){
      if (argc == 3 ) {
        send_file(argv[1], argv[2]);
      } else {
         printf("Main error, two params needed (from, to).\n");
         return 1;
      }
      return 0;
    }
    
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    tomes.io avatar 5.1.2014 22:02 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: SIGSEGV pri kopirovani souboru pomoci fopen
    Pomohlo, diky.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.