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

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    dnes 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 0
    včera 21:33 | Zajímavý projekt

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    včera 21:00 | Zajímavý software

    ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.

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

    Strands Decider 2B je malý open-source model s 2 miliardami parametrů, určený k rychlé klasifikaci vstupů a rozhodování mezi možnostmi, generující odpovědi ve stylu modelu Jev. Strands dosáhl přibližně 72% shody s Jevem na veřejné testovací sadě JevBench (tento benchmark pochopitleně nepředstavuje přímé srovnání s modelem Jev). Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache-2.0, váhy modelu na Hugging Face.

    ❗Červivý Hřib krade❗ | Komentářů: 3
    včera 16:22 | Upozornění

    Ve věku 90 let zemřela americká softwarová inženýrka Margaret Hamiltonová, která vedla tým, jenž vyvíjel letový software pro program Apollo amerického Národního úřadu pro letectví a vesmír (NASA).

    Ladislav Hagara | Komentářů: 4
    včera 13:33 | Humor

    Japonský Google rozšířil svou kolekci DYI fyzických klávesnic Gboard o klávesnici ve tvaru běžícího pásu. Proč se mají přesouvat ruce po klávesnici, když se mohou přesouvat klávesy k ruce? Pro zájemce je návod na sestavení včetně STL souborů pro 3D tisk a firmware k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 2
    7.10. 23:22 | Bezpečnostní upozornění

    Nejnovější X.Org X server 21.1.25 a Xwayland 24.1.14 řeší 12 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    7.10. 16:33 | Nová verze

    Google Chrome 155 byl prohlášen za stabilní. Přináší podporu JPEG XL (.jxl). Opraveno bylo 247 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 1
    7.10. 16:00 | Komunita

    Konference OpenAlt 2026 hledá přednášející. Přihlásit přednášky lze do neděle 11. října. Konference proběhne o víkendu 7. a 8. listopadu na půdě Fakulty informačních technologií VUT v Brně. Témata konference jsou: Otevřený a svobodný software, IoT a Hnutí tvůrců, Vzdělávání, Bezpečnost a soukromí, Otevřená společnost, komunity a data, OpenMobility a další.

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

    Dotaz: kqueue ve FreeBSD cloexec

    26.12.2015 12:08 Jiří
    kqueue ve FreeBSD cloexec
    Přečteno: 819×
    Nevíte, jestli kqueue() vrací deskriptor, co je automaticky označen close-on-exec? Nikde o tom nemůžu najít žádnou zmíňku a přijde mi divné, kdyby nebylo, znemožňovalo by to použití tohoto volání ve vícevláknovém programu. Děkuji.

    Odpovědi

    27.12.2015 12:47 BS
    Rozbalit Rozbalit vše Re: kqueue ve FreeBSD cloexec
    Zrovna sedím u FreeBSD mašiny, takže není nic snazšího než se zeptat.
    #include <sys/types.h>
    #include <sys/event.h>
    #include <sys/time.h>
    #include <stdio.h>
    #include <fcntl.h>
    
    
    int main(void)
    {
      int kq, flags;
      
      if ((kq = kqueue()) == -1) 
        return -1; 
      if ((flags = fcntl(kq, F_GETFL, NULL)) == -1)
        return -1; 
      printf("FD_CLOEXEC: %s\n", (flags & FD_CLOEXEC) ? "yes" : "no");
      return 0;
    }
    
    Odpověď zní:

    FD_CLOEXEC: no
    27.12.2015 12:57 BS
    Rozbalit Rozbalit vše Re: kqueue ve FreeBSD cloexec
    Pardon,

    musím dementovat sám sebe, takto to nejde. Jsem zblblý z Linuxu, FreeBSD neumí přes fcntl číst CLOEXEC bit.
    27.12.2015 13:07 Jiří
    Rozbalit Rozbalit vše Re: kqueue ve FreeBSD cloexec
    Já jsem si to před chvílí zkusil, fd číslo předám jako argument child procesu a tam to bylo normálně dostupné, takže zůstal otevřený. Našel jsem toto a zdá se, že NetBSD má proto kqueue1() s flagem, ale FreeBSD nic. To je smutné, protože kvůli tomu musím použít obyčejný poll(), nemohu si dovolit v knihovně vytvořit kqueue deskriptor, když nevím, jestli uživatel nemá nějaká vlákna, kde forkuje.
    27.12.2015 13:13 Jiří
    Rozbalit Rozbalit vše Re: kqueue ve FreeBSD cloexec
    Fungovalo by, kdybych vytvořil condition variable s mutexem, zaregistroval pthread_atfork(), a před kqueue() zamknul mutex a v pthread_atfork ho taky zkoušel zamknout? Není to tuším async signal safe, ale vždycky to bude voláno z vlákna, co volá fork a to nebude to moje, o kterém vím, že fork nevolá?
    27.12.2015 13:14 BS
    Rozbalit Rozbalit vše Re: kqueue ve FreeBSD cloexec
    Nicméně s mírnou modifikací, když nechci číst flagy, ale přímo CLOEXEC bit tak to lze, viz z man fcntl. Takže snad finálně.
    #include <sys/types.h>
    #include <sys/event.h>
    #include <sys/time.h>
    #include <stdio.h>
    #include <fcntl.h>
    
    
    int main(void)
    {
      int kq, flags;
      
      if ((kq = kqueue()) == -1) 
        return -1; 
      if ((flags = fcntl(kq, F_GETFD, NULL)) == -1) /* Nikoli GETFL, ale GETFD*/
        return -1; 
      printf("FD_CLOEXEC: %s\n", (flags & FD_CLOEXEC) ? "yes" : "no");
      return 0;
    }
    
    Závěr je ale stejný, COLOEXEC by default není, což je standardní, neznám žádný FD, který by tento bit měl ve výchozím stavu.

    Bit lze pak nastavit pomocí
    fcntl(kq, F_SETFD, FD_CLOEXEC);
    Omlouvám se za počáteční zmatenost. FreeBSD mám na desktopu, ale programuji hlavně pro Linux.
    27.12.2015 16:12 Jiří
    Rozbalit Rozbalit vše Re: kqueue ve FreeBSD cloexec
    COLOEXEC by default není, což je standardní, neznám žádný FD, který by tento bit měl ve výchozím stavu.
    Já taky ne, ale spoustě systémových volání jde nastavit flag, aby to tak bylo.
    Omlouvám se za počáteční zmatenost. FreeBSD mám na desktopu, ale programuji hlavně pro Linux.
    Nic se neděje, alespoň se někdo snaží pomoci. Nastavit potom jde, ale protože se jedná o knihovnu, nemůžu zaručit, jak jsem zmínil výše, že uživatel nemá další vlákno, kde forkuje, a mezi kqueue() a fcntl() pak vzniká race-condition, kdy mi může deskriptor uniknout do uživatelova podprocesu.
    10.2.2016 16:20 Jardík
    Rozbalit Rozbalit vše Re: kqueue ve FreeBSD cloexec
    Z manuálové stránky:
    The kqueue() system call creates a new kernel event queue and returns a descriptor. The queue is not inherited by a child created with fork(2).
    Proces před exec() většinou sebe fork()ne, takže v tomto případě nastavení CLOEXEC není třeba. Problém bude, když nějaké vlákno přímo zavolá exec() bez forknutí.

    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.