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 01:44 | Pozvánky

    Přemýšlíte, jak začít prázdniny? Už v úterý 1. července se bude konat Virtuální Bastlírna, tedy online setkání bastlířů, techniků, vědců i akademiků, kde se ve volné diskuzi probírají novinky ze světa techniky, ale i jiných zajímavých témat.

    Za poslední měsíc jsme byli svědky plamenů několika raket. Zatímco malá raketa od Hondy se úspěšně vznesla a opět přistála, raketa od SpaceX se rozhodla letět všemi směry najednou. Díkybohu méně … více »
    Uprdkávač | Komentářů: 0
    včera 23:44 | Komunita

    Linus Torvalds zmínil, že souborový systém Bcachefs zřejmě odstraní z mainline Linuxu v začleňovacím okně pro vydání 6.17. Kent Overstreet mu totiž posílá kód s novou funkcionalitou i pro začlenění do kandidátů na vydání, kdy očekává pouze opravy chyb. Ken Overstreet byl již dříve z vývoje vyloučen kvůli konfliktní komunikaci.

    Fluttershy, yay! | Komentářů: 0
    27.6. 11:55 | IT novinky

    Ministerstvo průmyslu a obchodu propaguje Microsoft. Ten ve spolupráci s Ministerstvem průmyslu a obchodu spouští AI National Skilling Plan v ČR. "Iniciativa Microsoftu přináší konkrétní a praktickou podporu právě tam, kde ji nejvíc potřebujeme – do škol, firem i veřejné správy.", říká ministr průmyslu a obchodu Lukáš Vlček.

    Ladislav Hagara | Komentářů: 25
    27.6. 10:55 | Zajímavý projekt

    Jste český ISP? Vyplněním krátkého dotazníku můžete pomoci nasměrovat vývoj nové generace routerů Turris Omnia [𝕏].

    Ladislav Hagara | Komentářů: 4
    27.6. 01:33 | IT novinky

    Celkové tržby společnosti Canonical za rok 2024 byly 292 milionů dolarů (pdf). Za rok 2023 to bylo 251 milionů dolarů.

    Ladislav Hagara | Komentářů: 1
    27.6. 01:22 | Nová verze

    Byla vydána verze 1.88.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ářů: 0
    27.6. 01:11 | Nová verze

    Distribuce Tails specializující se ochranu online soukromí uživatele byla vydána ve verzi 6.17. Mimo jiné aktualizuje Tor Browser (14.5.4) a opravuje několik chyb.

    Fluttershy, yay! | Komentářů: 0
    26.6. 21:11 | Nová verze Ladislav Hagara | Komentářů: 0
    26.6. 13:11 | IT novinky

    Město Lyon posiluje svou digitální suverenitu a postupně nahrazuje software od společnosti Microsoft bezplatnými alternativami, zejména OnlyOffice pro kancelářské aplikace a Linux a PostgreSQL pro systémy a databáze.

    Ladislav Hagara | Komentářů: 9
    26.6. 11:44 | Zajímavý projekt

    Evropská občanská iniciativa Stop Destroying Videogames se snaží o to, aby vydavatelé, kteří spotřebitelům v Evropské unii prodávají videohry nebo na ně udělují licence, měli povinnost tyto hry ponechat ve funkčním (hratelném) stavu i po ukončení podpory ze své strany. Podpořit podpisem tuto iniciativu můžete v Systému pro online sběr podpisů.

    trekker.dk | Komentářů: 5
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (28%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 331 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Zvrhlé hříčky s knihovnami pro céčko

    29.9.2006 16:33 | Přečteno: 2174× | IT | poslední úprava: 29.9.2006 18:15

    Dnes jsem absolvoval již druhou přednášku jednoho z velice zajímavých předmětů na FI MUNI aneb "Unix – programování a správa systému". Je to jeden z předmětů, kde se člověk konečně dozví nějaké praktické detaily (o programovování pod UNIXem...) a ne jen obecné teoretické blafy nebo IMHO věci, které by měly být náplní středoškolské informatiky. Dnes jsme věnovali část přednášky knihovnám a po zjištění, že pomocí LD_PRELOAD lze programům podstrčit "poupravené" funkce, jsem se vrhl na přepisování printf a scanf :-).

    LD_PRELOAD je proměnná shellu, do které lze umístit název knihovny, která má být dynamicky přilinkovaná jako první ke spuštěnému programu. Co to v praxi znamená? Že pokud knihovna obsahuje nějaké funkce, které jsou v jiné dynamicky načítané knihovně, pak budou tyto "odstíněny" naší novou verzí... Řekl jsem si, že většina programů se mnou nekomunikuje dostatečně přívětivě a tak jsem si zkusil napsat printf a scanf tak, aby byl ke mně počítač milejší ;-). Postup je jednoduchý. Nejdříve napíšeme zdroják s nově definovanými funkcemi. Třeba libhell.c:

    #include <stdio.h>
    #include <stdarg.h>
    
    int printf(const char *format, ...) {
       va_list args;
    
       va_start(args, format);
       vfprintf(stdout, "[Hello my boss!] :-) ", NULL);
       vfprintf(stdout, format, args);
       va_end(args);
       return vfprintf(stdout, "(-: [You're the best user!]\n", NULL);
    }
    
    int scanf(const char *fmt, ...)
    {
       int rc;
       va_list args;
    
       va_start(args, fmt);
    
       vfprintf(stdout, "(?) ;-) [Tell me something nice, my darling.]: ", NULL);
       rc = vfscanf(stdin, fmt, args);
       vfprintf(stdout, "    :-O [Thank you, boss!]\n", NULL);
    
       va_end(args);
    
       return rc;
    }
    

    To bychom měli to podstatné. Teď to ještě zkompilovat a nainstalovat. To uděláme s pomocí libtool: libtool --mode=compile gcc -g -O -c libhell.c; libtool --mode=link gcc -g -O -o libhell.la libhell.lo -rpath /usr/local/lib. Tak, knihovna je zkompilovaná a slinkovaná, takže ji už jen nakopírujeme do /usr/local/lib: cp libhell.la .libs/libhell.so* /usr/local/lib/.

    Naše nová a uživatelsky přívětivější ;-) implementace funkcí printf a scanf je na světě (dokonce i v našem počítači), ale ještě jsme ji nepodstrčili žádnému programu. Nicméně není to nic těžkého. Bashi řekneme export LD_PRELOAD="/usr/local/lib/libhell.so" a schválně si zkuste spustit "hello world" nebo jiný program, který používá přepsané funkce... Já jsem se nejvíc nasmál, když jsem provedl změny v libhell.c, spustil libtool a ten mi místo příkazů, které spouští, vypisoval jen "Burn in hell!" – to byla původní implementace :-D.

           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    29.9.2006 16:52 12345 | skóre: 41 | blog:
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Pěkné :-)

    Nemělo by místo „Say me something…“ být „Tell me something…“ ?
    29.9.2006 17:07 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Jojo … :-) Ale tomuhle příkladu teda říkám „zvrhlost“… :-D Myslím, že se najde hromada užitečnějších využití, třeba mnou kdysi zmíněná knihovna libtrash a podobně. :-)
    29.9.2006 18:05 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Tohle je ještě pitomější použití než to které tam bylo uvedeno jako příklad :-)
    Copak toho není dost?
    29.9.2006 18:10 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Tsss!!! :-D
    29.9.2006 18:12 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Myslel jsem to v tomhle blogu oproti tomu v přednášce. Koš je právě užitečné použití :-)
    Copak toho není dost?
    29.9.2006 18:21 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    To mi lichotí :-D.

    Jinak s tím "Tell me...": aspoň vidíte, proč jsem dostal za vstupní text z angliny jen 17 bodů z 50 ;-). Díky za korekci :-)
    θηριον ειμι
    29.9.2006 18:29 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    No já dostal takřka dvakrát tolik a taky bych tam dal Tell me, tak nevím.
    Copak toho není dost?
    29.9.2006 19:21 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    ;-) Ale ono tam má být "Tell me". Já tam měl původně "Say me" a pak jsem to opravil ;-). Holt se musím ještě hodně učit :-D
    θηριον ειμι
    29.9.2006 19:25 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Aha. Nějak mi dneska není vůbec dobře, tak mi to asi myslí ještě hůř než normálně.
    Copak toho není dost?
    29.9.2006 19:27 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Což o to, ono to nemusí být vyloženě špatně … :-) Viz třeba tohle:
    A: „Say me something.“

    B: „As you wish: Me something.“
    :-D :-D
    29.9.2006 19:40 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    No vida! Takže jsem to měl vlastně úplně správně a vy jste mě jen zmátli :-D :-D :-D
    θηριον ειμι
    29.9.2006 17:05 MaV | skóre: 6 | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Tak to jsme se museli na přednášce potkat :-)
    S tim, že je to hodně zajímavej předmět souhlasím, hlavně se už ale těším na druhou část, která se bude věnovat víc správě systému.
    Ale takhle si hrát s LD_PRELINK by mě fakt nenapadlo ;-)
    29.9.2006 17:07 MaV | skóre: 6 | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Samozřejmě jsem myslel LD_PRELOAD
    29.9.2006 17:12 k3 | skóre: 15 | blog:  
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    takovehle veci se obcas pouzivaji u re :)
    29.9.2006 18:19 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Tak to jsme se museli na přednášce potkat :-)
    JJ, byl jsem překvapen, že nás tam bylo dneska (vzhledem ke včerejšímu státnímu svátku a zítřejšímu výkendu) tolik :-D. Asi to poukazuje nejen na fakt, že nejsou dostupné videozáznamy, jak říkal pan Kasprzak :-D

    Jinak já si s tím hrál, protože jsem čekal, až se mi provede dist-upgrade mého slackware ;-)
    θηριον ειμι
    Zdenek.Z avatar 29.9.2006 17:18 Zdenek.Z | skóre: 14
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Jen bych si dovolil malou poznámku:
    :%s/\(#include \)\(.*\)/\1<\2>/
    A UNIXpass byl dobrý předmět. Bohužel jsem si z časových důvodů loni nemohl zapsat dvojku, ale už se těším na příští semestr.
    29.9.2006 18:15 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Ej karamba -- řvalo to na mně, že tam mám blbej "tag", tak jsem ty závorky umazal a zapomněl doplnit entity... Dikec ;-)
    θηριον ειμι
    30.9.2006 15:13 ondracch | skóre: 19 | blog: Mozková kreč
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Konečně blog o něčem. Jen tak dál.
    Proč myslíš, že nemůžeš žít jinak? Pořád Tvořím...

    Založit nové vláknoNahoru

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