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 17:33 | Bezpečnostní upozornění

    Byla vydána nová verze 25.12.6 linuxové distribuce primárně určené pro routery a vestavěné systémy OpenWrt (Wikipedie). Opravena je řada zranitelností v základních síťových službách, které jsou ve výchozím nastavení aktivní a které lze zneužít na dálku. Důrazně je doporučena aktualizace.

    Ladislav Hagara | Komentářů: 0
    dnes 16:00 | Zajímavý projekt

    Český projekt mapSTL.com promění vybrané místo na světě ve 3D mapu pro tisk, včetně měst, kopců a hor. Vytištěnou mapu můžete také pověsit na zeď jako obraz. STL i barevný 3MF stáhnete zdarma a bez registrace. Vyzkoušejte své oblíbené místo a podělte se o zpětnou vazbu.

    cvp | Komentářů: 1
    dnes 10:22 | Pozvánky

    Byl zveřejněn průběžně aktualizovaný program konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Konference proběhne o víkendu 7. a 8. listopadu v prostorách FIT VUT v Brně. Vstup je zdarma.

    Ladislav Hagara | Komentářů: 0
    dnes 08:08 | Zajímavý článek
    Nepálský ISP WorldLink Communications popisuje sedm let zavádění IPv6. Dnes provozuje přes milion IPoE přípojek, všechny s podporou IPv6, a přibližně 70 % provozu přenáší přes IPv6.… více »
    vencour | Komentářů: 1
    dnes 02:11 | Nová verze

    Po 9 týdnech vývoje od vydání Linuxu 7.2 oznámil Linus Torvalds vydání Linuxu 7.3. Podrobný přehled novinek a vylepšení na Linux Kernel Newbies nebo LWN.net: první a druhá polovina začleňovacího okna.

    Ladislav Hagara | Komentářů: 0
    včera 23:39 | Bezpečnostní upozornění
    Zjištěna zranitelnost v kernelu projevující se při virtualizaci. Nejde tedy o chybu samotného KVM ani konkrétního poskytovatele cloudu, ale o problém v linuxovém zpracování IPv4 paketů, který se může týkat různých virtualizačních a sandboxových prostředí. Více např. na hacker.news - Critical PwnEscape Linux Kernel Vulnerability Lets Guest VMs Read Host Memory. Aktualizace jsou k dispozici.
    vencour | Komentářů: 0
    včera 23:38 | Bezpečnostní upozornění
    Malware napsaný v Go se šíří mezi linuxovými systémy, pokouší se získávat SSH klíče a využívá kompromitované stroje pro těžbu kryptoměn. Autor použil FakeNet-NG a Wireshark k analýze síťové komunikace. Popsal také indikátory kompromitace a možnosti obrany. Zajímavé je propojení SSH bezpečnosti, analýzy síťového provozu a detekce prostřednictvím SIEM. více
    vencour | Komentářů: 0
    16.10. 15:55 | Nová verze

    Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 9.00. S podporou architektury AArch64 (ARM64).

    Ladislav Hagara | Komentářů: 0
    16.10. 03:44 | IT novinky

    Společnost Fairphone stojící za stejnojmennými mobilními telefony představila (pdf) bezdrátová špuntová sluchátka Fairbuds 2. Opravitelná, s vyměnitelnými bateriemi a tříletou zárukou. Cena 119 eur.

    Ladislav Hagara | Komentářů: 17
    16.10. 03:33 | Pozvánky

    O víkendu 17. a 18. října lze na brněnském výstavišti navštívit s jednou vstupenkou dvě akce: Maker Faire Brno, festival inovací, kreativity a kutilství, a GameDev Connect, akci určenou pro všechny současné a hlavně budoucí herní vývojáře.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (30%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2870 hlasů
     Komentářů: 32, poslední 11.10. 17:02
    Rozcestník

    Dotaz: Select - multiplexování socketů

    19.8.2010 20:39 Martin Matějek | skóre: 12 | blog: Flying_circus | Kladno
    Select - multiplexování socketů
    Přečteno: 575×
    Přílohy:
    Zdravím, pokouším se napsat program komunikující přes lokální sockety (AF_UNIX), který má přijmout spojení, vytvořit nový socket pro to dané spojení (s ním pak něco dělat) a čekat na další.

    Problém nastává, když chci aby hlídal dva sockety najednou (řídící - vypnutí,restart; socket pro „obyčejné“ spojení) pomocí funkce select(). Když se jsou sockety zařazeny za sebou
    listen(...,...);
    listen(...,...);
    tak všechno funguje v pořadí daném filedescriptory.

    Když zkusím použít select() takhle:
    FD_ZERO(&fd_read);
    FD_SET(sockfd, &fd_read);	
    FD_SET(rootsockfd, &fd_read);	
    	
    select(2,&fd_read, NULL, NULL, NULL);
    if (FD_ISSET(sockfd,&fd_read)) {
    	printf("Normal socket ready.\n");
    }
    else {
    	printf("Root socket ready.\n");
    }
    
    nic se nestane a „server“ se zasekne a už se nedostane k accept(). Zajímavé ovšem je, že „klient“ odešle to co má a skončí.

    Otázka zní: Jak funguje select()? Vycházel jsem z referenční příručky GNU C library (http://www.gnu.org/software/libc/manual/), kde mají ukázky podobným stylem.

    (Zdrojáky v příloze)
    Don't judge me by the friends I keep. No, no, no. Judge me by the enemies I have slain!

    Řešení dotazu:


    Odpovědi

    Řešení 1× (Martin Matějek (tazatel))
    19.8.2010 21:36 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Select - multiplexování socketů

    První argument select(2) není počet deskriptorů v poli deskriptorů, ale číslo nejvyššího deskriptoru navýšené o 1.

    Prakticky ve vašem programu čekáte na čtecí událost nad prázdnou množinou deskriptorů, která tedy nikdy nenastane. Deskriptor 0 a 1 má totiž již standardní vstup a standardní výstup.

    19.8.2010 23:51 Martin Matějek | skóre: 12 | blog: Flying_circus | Kladno
    Rozbalit Rozbalit vše Re: Select - multiplexování socketů
    Aha!
    select(FD_SETSIZE,&fd_read, NULL, NULL, NULL);
    
    to vyřešilo, díky!
    Don't judge me by the friends I keep. No, no, no. Judge me by the enemies I have slain!
    20.8.2010 07:43 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Select - multiplexování socketů
    Což ovšem kvůli implementaci v jádře bude nechutně pomalé. Proč tam asi tak ten první argument vůnec je? Je třeba při přidávání deskriptoru do pole hledat nejvyšší hodnotu deskriptoru a tu pak selectu předat.
    Luboš Doležel (Doli) avatar 20.8.2010 13:50 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Select - multiplexování socketů
    Proč tam asi tak ten první argument vůnec je?
    To by mě mimochodem docela zajímalo.
    20.8.2010 16:00 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Select - multiplexování socketů

    To byla řečnická otázka. Ale jestli chcete odpověď:

    Právě proto, že pole deskriptorů jsou skutečná pole a jádro je prochází lineárně. Vzhledem k tomu, že deskriptory mají obvykle malé číslo, tak je hloupost procházet všech INT_MAX prvků, když z nich většina je nevyplněná.

    20.8.2010 16:44 Martin Matějek | skóre: 12 | blog: Flying_circus | Kladno
    Rozbalit Rozbalit vše Re: Select - multiplexování socketů
    Mea culpa. Poté co jsem odeslal odpověď mě napadlo, že to možná je kanón na vrabce. Dík za vysvětlení.
    Don't judge me by the friends I keep. No, no, no. Judge me by the enemies I have slain!
    21.8.2010 01:23 zulu
    Rozbalit Rozbalit vše Re: Select - multiplexování socketů
    Kromě toho už vyřešeného prvního parametru... ten if-else po selectu by měl být if,if.

    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.