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:22 | Nová verze

    PyPy (Wikipedie), tj. implementace Pythonu v RPythonu, alternativa CPythonu v C, byla vydána v nové major verzi 8.0.0. Podporuje Python 2.7, 3.11 a 3.12.

    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Komunita
    V rakouském Štýrském Hradci probíhá konference vývojářů a uživatelů desktopového prostředí KDE Plasma Akademy 2026. O víkendu proběhly přednášky. Videozáznamy jsou k dispozici na YouTube.
    Ladislav Hagara | Komentářů: 1
    včera 23:55 | Bezpečnostní upozornění

    V jádře Linux byly nalezeny a v upstremu ve verzích 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50 a 7.2.4 již opraveny 4 kritické zranitelnosti umožňující eskalaci práv: DirtyAH6 (CVE-2026-80844), TUNderflow (CVE-2026-81000), PPPoEject (CVE-2026-68121) a DiagSpill (CVE-2026-74469).

    Ladislav Hagara | Komentářů: 0
    včera 23:11 | Zajímavý článek

    Německá policie a celníci zneužívají ke čtení zpráv komunikačních aplikacích WhatsApp, Signal, Telegram nebo Threema velice jednoduchý trik, který nevyžaduje prolomení šifrování, spear phishing, odposlech SMS či jinou technicky náročnou metodu. Příslušníkům státního aparátu pouze stačí získat krátký přístup k odemčenému telefonu a prostřednictvím QR kódu propojit účet s oficiální desktopovou nebo webovou aplikací v policejním

    … více »
    AfD 💙 | Komentářů: 0
    19.9. 02:11 | IT novinky Ladislav Hagara | Komentářů: 0
    18.9. 19:11 | Zajímavý projekt

    Fugleramme, v překladu 'ptačí rámeček', je open-source projekt postavený na Raspberry Pi, který pomocí lokální umělé inteligence BirdNET-Go rozpoznává ptačí druhy podle jejich zpěvu a na displeji následně zobrazuje koláž tvořenou odpovídajícími ilustracemi. Databáze obsahuje přes 800 ručně vybraných historických přírodovědných ilustrací více než 400 druhů ptáků.

    … více »
    AfD 💙 | Komentářů: 1
    18.9. 16:55 | Nová verze

    Unicode Consortium, nezisková organizace koordinující rozvoj standardu Unicode, oznámila vydání Unicode 18.0. Přidáno bylo 13 007 nových znaků. Celkově jich je 172 808. Přibylo 9 nových Emoji.

    Ladislav Hagara | Komentářů: 5
    18.9. 13:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 169 (pdf).

    Ladislav Hagara | Komentářů: 0
    18.9. 03:33 | Nová verze

    Byla vydána nová verze 6.4 programovacího jazyka Swift (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    17.9. 23:11 | Komunita

    Německý kancléř Friedrich Merz (CDU) se během debaty s finalisty studentské vědecké soutěže Jugend forscht vyjádřil pro konec anonymity na internetu a vyslovil názor, že pro uživatele Internetu by měla platit podobná právní odpovědnost jako pro novináře tradičních médií. Na dotaz studenta, jak by se tedy povinnost uvádět pravé jméno slučovala s prací investigativních novinářů nebo ochranou jejich zdrojů, Merz neodpověděl, ve své

    … více »
    AfD 💙 | Komentářů: 53
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2702 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    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: 553×
    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á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.