Příspěvek na blogu Ubuntu upozorňuje na několik zranitelnosti v rozšíření Linuxu o mandatorní řízení přístupu AppArmor. Společně jsou označovány jako CrackArmor. Objevila je společnost Qualys. Neprivilegovaný lokální uživatel se může stát rootem. Chyba existuje od roku 2017. Doporučuje se okamžitá aktualizace.
Byla vydána nová verze 19 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v changelogu.
Bitwig Studio (Wikipedie) bylo vydáno ve verzi 6. Jedná se o proprietární multiplatformní (macOS, Windows, Linux) digitální pracovní stanici pro práci s audiem (DAW).
Společnost Igalia představila novou linuxovou distribuci (framework) s názvem Moonforge. Jedná se o distribuci určenou pro vestavěné systémy. Vychází z projektů Yocto a OpenEmbedded.
Google Chrome 146 byl prohlášen za stabilní. Nejnovější stabilní verze 146.0.7680.71 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 29 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
D7VK byl vydán ve verzi 1.5. Jedná se o fork DXVK implementující překlad volání Direct3D 3 (novinka), 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Bylo vydáno Eclipse IDE 2026-03 aneb Eclipse 4.39. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Ze systému Slavia pojišťovny uniklo přibližně 150 gigabajtů citlivých dat. Jedná se například o pojistné dokumenty, lékařské záznamy nebo přímou komunikaci s klienty. Za únik může chyba dodavatelské společnosti.
Sněmovna propustila do dalšího kola projednávání vládní návrh zákona o digitální ekonomice, který má přinést bezpečnější on-line prostředí. Reaguje na evropské nařízení DSA o digitálních službách a upravuje třeba pravidla pro on-line tržiště nebo sociální sítě a má i víc chránit děti.
Meta převezme sociální síť pro umělou inteligenci (AI) Moltbook. Tvůrci Moltbooku – Matt Schlicht a Ben Parr – se díky dohodě stanou součástí Meta Superintelligence Labs (MSL). Meta MSL založila s cílem sjednotit své aktivity na poli AI a vyvinout takovou umělou inteligenci, která překoná lidské schopnosti v mnoha oblastech. Fungovat by měla ne jako centralizovaný nástroj, ale jako osobní asistent pro každého uživatele.
ioctl().
/dev/ttyS0 (nebo jiný) pro čtení i zápis, zapisujte tam a čtěte z něj, jako by to byl normální soubor. Něco složitějšího by bylo potřeba řešit teprve ve chvíli, kdy byste potřeboval zpracovávat data od protějšku asynchronně.
sigaction(). Funguje to asi takhle:
struct sigaction saio; saio.sa_handler = signal_handler_IO; sigemptyset(&saio.sa_mask); saio.sa_flags = 0; saio.sa_restorer = NULL; sigaction(SIGIO,&saio,NULL); fcntl(fd, F_SETOWN, getpid()); fcntl(fd, F_SETFL, FASYNC);
signal_handler_IO() je funkce, kterou si napíšeš sám. Tohle funguje jako přerušení - když přijdou data z portu, tvůj program přeruší běh a vykoná tuhle funkci; pak se vrátí tam, odkud vyskočil. Je to příklad, který jsem našel na netu, neověřoval jsem, jestli bude fungovat - cílem bylo ukázat na dvě podstatné funkce: sigaction() a fcntl()
Pokud si vzpomínám, ten port musí být otevřen jako neblokující (parametr O_NONBLOCK předaný funkci open()) a asynchronní. Příklad s nějakou teorií okolo toho najdeš tady
Druhá možnost je využití sigwait() nebo sigwaitinfo(). To se hodí, když program čeká na víc věcí naráz. Z hlediska programátora to funguje tak, že program se po zavolání této funkce zastaví a čeká, až se něco stane - vypršení časovače, přijetí dat na portu atd. Když jsem naposledy hledal, moc jsem toho na webu nenašel, ale něco je tady
Nějaké srovnání mezi těmito způsoby najdeš v diskuzi zde. Popis všech jmenovaných funkcí najdeš v manuálových stránkách (man jméno_funkce), popřípadě na webu: Linux man pages.
Který způsob si vybereš (signál jedním či druhým způsobem nebo samostatné vlákno), je na tobě; asi to bude záviset na tom, co ten program dělá kromě obsluhy portu, jaké má uživatelské rozhraní (jestli nějaké má) a podobně.
Pokud nepotřebujete během toho čekání na data dělat něco jiného, tak v tom není žádný problém. Syscall read() se nevrátí, dokud nepřečte nějaká data, nedojde k chybě nebo nedostanete nějaký signál. Pokud potřebujete během čekání vyvíjet nějakou činnost, je možné podle okolností použít select()/poll(), asynchronní čtení, samostatný thread, možná jsou i další možnosti. Ale pak by to chtělo víc informací.
Tiskni
Sdílej: