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 00:44 | Pozvánky

V sobotu 21. října 2017 se na půdě Elektrotechnické fakulty ČVUT v Praze uskuteční RT-Summit – setkání vývojářů linuxového jádra a uživatelů jeho real-time verze označované jako preempt-rt.

… více »
Pavel Píša | Komentářů: 1
včera 23:44 | Bezpečnostní upozornění

V Linuxu byla nalezena bezpečnostní chyba CVE-2017-15265 zneužitelná k lokální eskalaci práv. Jedná se o chybu v části ALSA (Advanced Linux Sound Architecture).

Ladislav Hagara | Komentářů: 1
včera 22:44 | Komunita

Greg Kroah-Hartman informuje na svém blogu, že do zdrojových kódu linuxového jádra bylo přidáno (commit) prohlášení Linux Kernel Enforcement Statement. Zdrojové kódy Linuxu jsou k dispozici pod licencí GPL-2.0. Prohlášení přidává ustanovení z GPL-3.0. Cílem je chránit Linux před patentovými trolly, viz například problém s bývalým vedoucím týmu Netfilter Patrickem McHardym. Více v často kladených otázkách (FAQ).

Ladislav Hagara | Komentářů: 3
včera 22:04 | Pozvánky

Rádi bychom vás pozvali na přednášku o frameworku Avocado. Jedná se o testovací framework další generace, inspirovaný Autotestem a moderními vývojovými nástroji, jako je třeba git. Přednáška se bude konat 23. října od 17 hodin na FEL ČVUT (Karlovo náměstí, budova E, auditorium K9 – KN:E 301). Více informací na Facebooku.

… více »
mjedlick | Komentářů: 0
včera 21:44 | Bezpečnostní upozornění

Nový útok na WPA2 se nazývá KRACK a postihuje prakticky všechna Wi-Fi zařízení / operační systémy. Využívá manipulace s úvodním handshake. Chyba by měla být softwarově opravitelná, je nutné nainstalovat záplaty operačních systémů a aktualizovat firmware zařízení (až budou). Mezitím je doporučeno používat HTTPS a VPN jako další stupeň ochrany.

Václav HFechs Švirga | Komentářů: 2
15.10. 00:11 | Zajímavý projekt

Server Hackaday představuje projekt RainMan 2.0, aneb jak naučit Raspberry Pi 3 s kamerovým modulem pomocí Pythonu a knihovny pro rozpoznávání obrazu OpenCV hrát karetní hru Blackjack. Ukázka rozpoznávání karet na YouTube. Zdrojové kódy jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 0
14.10. 15:11 | IT novinky

Online obchod s počítačovými hrami a elektronickými knihami Humble Bundle byl koupen společností IGN. Dle oficiálních prohlášení by měl Humble Bundle dále fungovat stejně jako dosud.

Ladislav Hagara | Komentářů: 8
14.10. 06:00 | Zajímavý článek

Brendan Gregg již v roce 2008 upozornil (YouTube), že na pevné disky se nemá křičet, že jim to nedělá dobře. Plotny disku se mohou rozkmitat a tím se mohou prodloužit časy odezvy pevného disku. V září letošního roku proběhla v Buenos Aires konference věnovaná počítačové bezpečnosti ekoparty. Alfredo Ortega zde demonstroval (YouTube, pdf), že díky tomu lze pevný disk použít také jako nekvalitní mikrofon. Stačí přesně měřit časy odezvy

… více »
Ladislav Hagara | Komentářů: 8
13.10. 14:33 | Komunita

Společnost SUSE natočila a na YouTube zveřejnila dva nové videoklipy: 25 Years - SUSE Music Video (7 Years parody) a Linus Said - Music Parody (Momma Said).

Ladislav Hagara | Komentářů: 6
13.10. 12:55 | Zajímavý projekt

Autoři stránky Open Source Game Clones se snaží na jednom místě shromažďovat informace o open source klonech proprietárních počítačových her. Přidat další hry nebo návrhy na zlepšení lze na GitHubu. Na stránce Open Source Text Games jsou shromažďovány informace o open source textových hrách. Opět lze k vylepšení nebo doplnění stránky použít GitHub.

Ladislav Hagara | Komentářů: 1
Těžíte nějakou kryptoměnu?
 (6%)
 (2%)
 (15%)
 (76%)
Celkem 717 hlasů
 Komentářů: 24, poslední 27.9. 08:30
    Rozcestník

    Dotaz: kqueue ve FreeBSD cloexec

    26.12.2015 12:08 Jiří
    kqueue ve FreeBSD cloexec
    Přečteno: 458×
    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.