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

    Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 1
    včera 23:11 | Nová verze

    Byla vydána nová stabilní verze 4.0 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). S rozhraním přepsaným do Qt. Přehled novinek také na YouTube. Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 2
    včera 16:55 | IT novinky

    NVIDIA kupuje Hugging Face za 12,93 miliardy dolarů.

    Ladislav Hagara | Komentářů: 3
    včera 15:44 | IT novinky

    Předobjednat si lze nový jednodeskový počítač Arduino VENTUNO Q s předinstalovaným Ubuntu. S 16 GB LPDDR5 a 64 GB eMMC. Pro lokální LLM, agentní AI, počítačové vidění, robotiku…

    Ladislav Hagara | Komentářů: 1
    včera 13:00 | Zajímavý software

    Hexpair není nejlepší HEX editor na světě a ani se o to nesnaží. Zato je k dispozici kdykoliv a kdekoliv – všude tam, kde máte svůj Vim. Vznikl jako hobby projekt před pár měsíci a dospěl do stavu, kdy by mohl být užitečný širší komunitě. Přepnout do HEX režimu se dá i uprostřed rozdělané práce: Soubor, který už máte otevřený běžným vim file.md, jedním příkazem přepnete do HEX editoru a dalším příkazem ho můžete vrátit zpět do textu. Kurzor přitom

    … více »
    Cohen | Komentářů: 1
    včera 01:55 | Nasazení Linuxu

    CERN dlouhodobě používal vlastní sestavení RHEL, ze kterého přešel na CentOS Stream. Federico Vaga a Nikos Tsipinakis ale nyní v přednášce na MiniDebConf Winterthur 2026 popisují plán probíhajícího přechodu na Debian pro řízení akcelerátorů. Důvodem k opuštění CentOS Stream jsou zachování zpětné kompatibility se starším hardwarem, kterou Red Hat narušuje, když tlačí sestavení balíčků pro novější verze architektury (x86-64), a nedostatečné nástroje pro sestavování vlastních balíčků a repozitářů.

    |🇵🇸 | Komentářů: 13
    včera 01:44 | Nová verze

    UZDoom (Wikipedie), tj. fork GZDoom, byl vydán ve verzi 5.0.0. Videopředstavení na YouTube. Podrobný přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 0
    2.9. 16:11 | Nová verze

    Příručka Linux From Scratch pro sestavení základního linuxového systému byla aktualizována v pravidelném půlročním termínu. Vydání 13.1 shrnuje přes 40 nových verzí balíčků a několik patchů. Navazující příručka Beyond Linux From Scratch s recepty pro sestavení dalších knihoven a aplikací zatím vydána nebyla, ačkoliv vývojová verze stále dostává aktualizace. Lze je číst online nebo stáhnout v HTML či PDF.

    |🇵🇸 | Komentářů: 0
    2.9. 12:44 | IT novinky

    Národní bezpečnostní tým CSIRT.CZ koordinovaný sdružením CZ.NIC přichází se službou Strážci internetu, která má sjednotit způsob hlášení doménových jmen zneužívaných k páchání trestné činnosti. Službu mohou uživatelé využívat také prostřednictvím rozšíření do prohlížeče. Nový nástroj podporuje jak hlášení vyžadující autorizaci, tak anonymní reporting, u kterého však nebude možné zapojit takovou míru automatizace jako u

    … více »
    Ladislav Hagara | Komentářů: 25
    2.9. 12:22 | Komunita

    Firefox pro iOS přichází s integrovaným blokováním reklam. Funkce je ve výchozím nastavení vypnutá a lze ji aktivovat v Settings > Browsing > Ad Blocker.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (3%)
     (20%)
     (29%)
     (7%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2566 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: 724×
    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á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.