Oslavte vydání openSUSE Leap 16.1 s námi v Praze! Ve středu 4. listopadu 2026 (den po vydání Leapu 16.1) vás zveme na malou oslavu vydání openSUSE Leap 16.1 do pražské kanceláře SUSE. Připravili jsme pro vás dvě krátké přednášky: … více »
Dle plánu bylo PHP vydáno v nových verzích 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Opraveny jsou kritické zranitelnosti CVE-2026-109618 a CVE-2026-109619 aneb PHP2Shell.
UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-2.1 a 24.04-1.5. S opravou kritických zranitelností.
Společnost Škoda Auto zveřejnila na Printables bezplatné 3D modely příslušenství do svých vozů (držáky na nápoje, pomůcky pro vedení kabelů, mincovníky, háčky na USB kabely a čepice pro kapsy na zadních stranách opěradel sedadel, držáky na telefony a úchyty pro horní upevnění bezpečnostních pásů).
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 170 (pdf).
Dnes v 16:00 (14:00 UTC) budou opraveny 2 kritické zranitelnosti s CVSS 9.2 v PHP.
Nizozemská policie 13. října 2026 zabavila v datacentru Amsterdam Science Park server italského poskytovatele internetových služeb Autistici/Inventati (A/I), a to na základě americké žádosti o mezinárodní právní pomoc.… více »
Do 26. října do 18:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | říjen 2026 (YouTube) doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Čínská technologická společnost DeepSeek zveřejnila na GitHubu svůj framework DeepInfer, nástroj pro efektivní offline inferenci svého modelu DeepSeek-V4.1-Flash ve velkém měřítku. Software běží na Linuxu a nativně podporuje akcelerátory Nvidia ale i čipy Huawei Ascend 950. Jedná se pouze o samotný inferenční engine, ne kompletní produkční službu. Zdrojový kód je dostupný pod licencí Apache 2.0.
Řešení dotazu:
Proč tak silná slova - záludnost, překvapovat, problém, trpět? To chování je naprosto standardní a je popsáno snad v každé dokumentaci. Kdo používá syscally typu write() přímo, měl by přece vědět, že mohou vrátit -1 nejen kvůli skutečné chybě, ale i proto, že byly přerušeny signálem (a nemusí to být zdaleka jen CHLD). Řešení existují - od ruční kontroly errno přes makro TEMP_FAILURE_RETRY, použití sigaction() s nastavením příznaku SA_RETRY až po (dočasné) blokování signálu.
Navíc je to chování v řadě situací žádoucí: pokud budete mít např. síťového démona, jehož handler na TERM jen nastaví příznak, na základě kterého se pak vyskočí z hlavní smyčky, tak právě toto chování vám umožní, aby démon skončil hned po obdržení signálu TERM a ne až ve chvíli, kdy se připojí další klient.
Pokud jsem pouzil prilis silna slova, tak se omlouvam
Není potřeba se omlouvat, prostě jsem měl z vašeho dotazu pocit, že přerušení přerušitelných syscallů signálem (znovu zdůrazňuji, že se to týká všech signálů, nejen CHLD) považujete za chybu nebo dokonce jakousi "past na programátory". Proto jsem se snažil (v posledním odstavci) naznačit, že existují velmi dobré důvody, proč se systém chová právě takto, a zmínit několik způsobů, jak se s tím (více či méně snadno) vypořádat.
void work()
{
...
}
int main(int argc,
char **argv)
{
...
sigset_t mask;
sigfillset(&mask);
// Blokneme všechny signály, takže se budou doručovat, jen když je čekám
pthread_sigmask(SIG_BLOCK, &mask, nullptr);
/* Vytvořím pracující vlákno; nová vlákna dědí masku, takže tohle vlákno
* nedostane žádné signály, pokud na ně nebude čekat */
pthread_t worker;
pthread_create(&worker, nullptr, &work, nullptr);
// Čekám na signály
sigemptyset(&mask);
sigaddset(&mask, SIGINT);
sigaddset(&mask, SIGQUIT);
sigaddset(&mask, SIGTERM);
... // a další, co nás zajímají
for (bool running = true; running;) {
int sig = 0;
sigwait(&mask, &sig);
switch (sig) {
case SIGINT:
case SIGQUIT:
case SIGTERM:
running = false;
break;
... // další signály
}
}
... // Oznámíme vláknu, že má skončit, a počkáme na něj
int ret;
pthread_join(&thread, &ret);
return ret; // Hotovo :)
}
A pro komunikaci s druhým vláknem (informaci, že má skončit) můžete využít třeba eventfd — moje oblíbené, je to taková lehká roura, dá se na tom selectovat
Tiskni
Sdílej: