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í
×
    dnes 04:44 | Nová verze

    Byla vydána beta verze Ubuntu 26.10 s kódovým názvem Stonking Stingray. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.10 mělo vyjít 15. října 2026.

    Ladislav Hagara | Komentářů: 0
    včera 22:22 | Nová verze

    Byla vydána verze 1.99.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 1
    včera 18:11 | Komunita

    Od 13. do 15. října proběhne v Praze OpenSSL Conference 2026. Na YouTube lze zhlédnout videozáznamy přednášek z loňského roku.

    Ladislav Hagara | Komentářů: 1
    včera 17:22 | IT novinky

    Eben Upton oznámil další zdražení jednodeskových počítačů Raspberry Pi. Tentokrát 2 GB varianty o 12,50 dolarů. Nově 2 GB Raspberry Pi 4 stojí 67,50 dolarů a 2 GB Raspberry Pi 5 stojí 77,50 dolarů.

    Ladislav Hagara | Komentářů: 4
    včera 13:00 | Nová verze

    OpenMandriva ROME, tj. průběžně aktualizovaná (rolling) edice linuxové distribuce OpenMandriva, byla vydána ve verzi 26.09. Vedle Flatpaku také s podporou Snapu.

    Ladislav Hagara | Komentářů: 1
    včera 04:33 | Zajímavý software

    Edison Design Group po více než 30 letech zveřejnil zdrojový kód svého EDG C/C++ front-endu. Ten proslul širokou podporou standardů C++ a kompatibilitou s dialekty kompilátorů od Microsoftu, GNU, Clangu, Sunu a dokonce i s prehistorickým cfrontem. EDG byl použit například v kompilátoru Intel C++ Classic, kompilátoru NVCC od firmy NVIDIA pro platformu CUDA nebo v našeptávači kódu IntelliSense v produktech společnosti Microsoft. Projekt nyní spravuje organizace The C++ Alliance a kód je dostupný pod licencí Apache 2.0, doplněnou o výjimky projektu LLVM.

    AfD 💙 | Komentářů: 1
    včera 04:11 | Zajímavý projekt

    Pocket Tank je malé kapesní virtuální akvárium postavené na vývojové desce ESP32-S3-Touch-AMOLED-1.8. Na dvoujádrovém mikrokontroléru ESP32-S3 s 8 MB PSRAM a 16 MB flash paměti běží jak simulace akvária, tak i malý jazykový model určující chování rybiček. Lokální model o velikosti 7,56 MB se 14 miliony parametrů vznikl destilací modelu Gemma 4 26B, tedy učitele s 26 miliardami parametrů. Kromě firmwaru pro skutečný modul s AMOLED

    … více »
    AfD 💙 | Komentářů: 3
    včera 03:55 | Zajímavý software

    Open-source nástroj Jevstiller vytváří (destiluje) malý lokální model, který se průběžně učí z odpovědí komerční služby Jev. Běžné dotazy vyřizuje přímo na vlastním hardware, čímž může řádově zkrátit čas odezvy a snížit provozní náklady díky menšímu využívání zpoplatněného API. Nejisté požadavky Jevstiller posílá do Jevu, rovněž průběžně kontroluje náhodná dvě procenta dotazů Jevem. Pokud se lokální model začne s Jevem rozcházet,

    … více »
    AfD 💙 | Komentářů: 4
    30.9. 12:00 | Pozvánky

    Konference LinuxDays 2026 proběhne již tento víkend 3. a 4. října v Praze v areálu ČVUT v Dejvicích na FIT. Konference LinuxDays 2026 znamená desítky přednášek a workshopů, zástup zajímavých osobností, místo pro setkání, spoustu nových nápadů a informací a stánky řady různých projektů: Fedora, openSUSE, vpsFree.cz, Mozilla, MacGyver - bastlíři SH, OpenAlt a mnoho dalších. Vstup je volný.

    Ladislav Hagara | Komentářů: 6
    30.9. 04:33 | IT novinky

    Microsoft oznámil, že WSL kontejnery (WSLC) aneb linuxové kontejnery ve Windows Subsystem for Linux (WSL) jsou již obecně dostupné. Současně popsal jejich architekturu.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2772 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Segmentation fault při kopírování argv[]

    21.7.2008 00:10 Snur | skóre: 5
    Segmentation fault při kopírování argv[]
    Přečteno: 730×
    Zdravím. Vytvářím v céčku aplikaci která bude číst vstup přes argumenty zadané v příkazové řádce. Mám však problém s kopírováním parametrů z argv[] do připraveného pole. Ovšem tištění platných parametrů problém nedělá. Zde je část zdrojového kódu:
    #include < stdio.h >
    #include < stdlib.h >
    #include < string.h >
    
    int main(int argc, char * argv[])
    {
    	char argvtemp[100];
    	strcpy(argvtemp,argv[1]);
            .
            .
            .
    
    Při spuštění dělá toto:
    ~$ ./program --parametr="Super věc"
    Neoprávněný přístup do paměti (SIGSEGV)
    
    Když se na to podívám přes gdb tak uvidím toto:
    Breakpoint 1, main (argc=1, argv=0xbf864434) at desccreator.c:8
    8               strcpy(argvtemp,argv[1]);
    (gdb) step
    Program received signal SIGSEGV, Segmentation fault.
    0xb7e22cc0 in strcpy () from /lib/libc.so.6
    
    A když napíši tohle namísto strcpy():
    printf("%s\n",argv[1]);
    přeložím a spustím, dostanu normálně:
    ~$ ./program --parametr="Super věc"
    --parametr="Super věc"
    
    Nevíte někdo co s tím? Už si opravdu nevím rady. Připadá mi to na hlavu postavené, strcpy() přece z argv[] jen čte stejně jako printf(), tak proč u kopírování dochází k chybě a u tištění ne? Do programu takhle načítám data poprvé takže možná že dělám někde chybu. Budu vděčný za každou radu.

    Odpovědi

    21.7.2008 00:33 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Nevidím důvod, proč by měl program padat, když je mu zadán parametr kratší než 99 znaků, což se v tomto případě děje, i tak je v něm ale chyba. Nelze dopředu zaručit, že bude nastaven jiný než první prvek pole, počet parametrů programu udává parametr argc funkce main. Dále je třeba dát pozor na délku řetězce.
    char *p;
    …
    if (argc >= 1) {
      p = malloc(strlen(argv[1])+1);
      if (p != NULL) {
        strcpy(p, argv[1]);
      }
    }
    …
    
    21.7.2008 00:34 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Měl bych si dávat větší pozor, v podmínce má být samozřejmě argc >= 2.
    21.7.2008 00:44 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Netusim, cim je to sposobene, ale vsimni si vypis breakpointu:
    Breakpoint 1, main (argc=1, argv=0xbf864434) at desccreator.c:8
    argc=1 a ty sa snazis citat z argv[1].
    If you hold a Unix shell up to your ear, you can you hear the C.
    21.7.2008 03:43 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Ten kód je funkční (ale v pořádku není, viz předchozí příspěvky). Spíš si myslím, že v tom programu máš ještě jednu chybu, která vyvolá SIGSEGV, i když program spustíš s parametrem (nebo leda že by sis ten výpis po spuštění vymyslel), ale když program debuguješ, zapomeneš tam ten parametr dát a program slítne hned na strcpy :-)
    21.7.2008 06:07 pakanek | skóre: 28 | Vyškov
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Me ten tvuj kod hazi SIGSEGV jen pokud jej spustim bez parametru. Pokud jej spustim s parametrem, tak je program v poradku.
    Všechno dobré je pro něco zlé.
    21.7.2008 12:06 Snur | skóre: 5
    Rozbalit Rozbalit vše Re: Segmentation fault při kopírování argv[]
    Máte všichni pravdu.U spouštění programu jsem na argumenty nezapomínal, ovšem během ladění v gdb už ano. Proto ten argc=1, což jsem si měl taky všimnout. Takže během všelijakých úprav se zdrojovým kódem jsem dostávál zkreslené informace o pravém původci chyby což v mém případě byla malá chyba v jedné funkci kterou jsem si napsal a chtěl rychle otestovat, proto ten nedotažený kód. Ale jak vidno měl jsem ho přece v tomto případě dotáhnout, dříve bych přišel kde dělám chybu. Taková stupidní chyba - připadám si jak blbec. Velice díky za rady.

    Založit nové vlákno • Nahoru

    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.