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 02:16 | Bezpečnostní upozornění
    Zranitelnost CVE-2026-98432 s CVSS 9.8 odhalila AI od společnosti Anthropic. Jedná se o kritickou chybu v implementaci MPTCP (multipath TCP). Debian vydal patche 16.10. a 22.10., ale např. Ubuntu je zatím bez opravy. Více informací na thehackernews.com.
    Max | Komentářů: 0
    včera 23:22 | Zajímavý software

    Na Slovensku vznikla úplne nová rally hra, ktorá je zadarmo a funguje vo Windowse, Linuxe či na Macu. Greenie Rally má viac ako 50 tratí a vozidiel, šampionáty či turnaje. Má retro feeling a imituje automobilové hry z prelomu tisícročí. Vyskúšate prejsť všetky mapy na Škode 130RS?

    Stanislav Hoferek | Komentářů: 0
    včera 14:33 | Komunita

    Do základního systému NetBSD -current byl přidán nový editor atto jako alternativa k editorům vi a xedit.

    Ladislav Hagara | Komentářů: 1
    včera 14:11 | IT novinky

    Společnost System76 představila kompaktní 11litrový Thelio Prime Desktop. S procesorem AMD Ryzen 9000. S Pop!_OS 24.04 LTS s desktopovým prostředím COSMIC nebo Ubuntu 24.04 LTS.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Humor

    Čínská státní televize pozastavila vysílání španělské La Ligy a čínské internetové platformy omezily obsah s Kylianem Mbappém poté, co slavný fotbalista ve francouzském pořadu The Bridge mluvil o svém oblíbeném memu, v němž je jeho tvář vložena do portrétu zobrazujícího diktátora Mao Ce-tunga. 'Můj oblíbený mem je ten, na kterém dali můj obličej na čínského diktátora. To mě opravdu rozesmívá. S přáteli ho používám pořád' řekl,

    … více »
    Pendrekama do nich❗ | Komentářů: 4
    včera 13:22 | IT novinky

    Při příležitosti oslav Dne vzniku samostatného československého státu (28. října) byly uděleny medaile Za zásluhy tvůrci aplikace Záchranka Filipu Maleňákovi, vědci v oblasti umělé inteligence Tomáši Mikolovovi a Olze Štěpánkové, vědkyni zabývající se kybernetikou, robotikou a strojovým učením, průkopnici v oblastech výuky a využití umělé inteligence v medicínském inženýrství.

    Pendrekama do nich❗ | Komentářů: 2
    včera 01:33 | IT novinky

    Apple představil nový iPad mini, iMac s čipem M6, 14palcový MacBook Pro s čipem M6 a MacBook Pro s PROLED XDR displejem – první Mac s dotykovým ovládáním.

    Ladislav Hagara | Komentářů: 4
    28.10. 23:22 | Zajímavý projekt

    Nedávno představený projekt mapSTL.com řeší budoucnost. 𝕏: "Netušil jsem, kolik patentů na generování map existuje. Existují patenty na generování fantasy map 🫣. Cokoliv je na 3D tiskárnu a tvoří to produkt, bude to mít patenty. Tak bacha na to!" … více »

    Ladislav Hagara | Komentářů: 3
    28.10. 18:55 | Nová verze

    Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.4 (𝕏). Přehled novinek a vylepšení v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    28.10. 18:22 | Bezpečnostní upozornění

    Byla objevena zranitelnost Tailworm v Tailscale a Headscale umožňující lokální eskalaci práv přihlášeného uživatele. Následně byla v Tailscale v opravené verzi 1.104.4+ změněna architektura aplikace. Viz příspěvek na blogu Tailscale.

    vencour | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2941 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    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: 578×
    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.