Ubuntu Cinnamon bude od Ubuntu 23.04 oficiální odnoží Ubuntu (návrh, schválení).
Byla vydána nová major verze 5.0 účetního softwaru GnuCash (Wikipedie). Ve formátu Flatpak je již k dispozici na Flathubu.
Na GOG.com běží Spring Sale. Při té příležitosti lze získat zdarma počítačovou hru Alwa's Awakening (ProtonDB).
Byla vydána verze 3.28.0 2D CAD (computer-aided design) softwaru QCAD (Wikipedie). Přehled novinek v Changelogu.
Změna ve vedení společnosti SUSE. Dosavadní CEO Melissa Di Donato odstoupila. Od 1. května je novým CEO Dirk-Peter van Leeuwen, bývalý Senior Vice President a General Manager ve společnosti Red Hat.
CyberChef je webová aplikace pro analýzu dat a jejich kódování a dekódování, šifrování a dešifrování, kompresi a dekompresi, atd. Často je využívaná při kybernetických cvičeních a CTF (Capture the Flag). Vydána byla nová major verze 10 (aktuálně 10.4.0). Přehled novinek v Changelogu.
UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch OTA-1 Focal založené na Ubuntu 20.04 Focal Fossa.
Společnost Red Hat slaví 30 let.
Ve věku 91 let zemřel izraelský informatik Ja'akov Ziv, spolutvůrce bezztrátových kompresních algoritmů LZ77, LZ78 a LZW (Lempel–Ziv–Welch).
Byla představena nová Arduino deska Arduino UNO R4 s 32bitovým MCU RA4M1 (Arm Cortex-M4). Desku lze zatím získat pouze v rámci early access programu.
waitpid()
se dá volat i jako neblokující, např. waitpid(-1, &status, WNOHANG)
. Je to rozhodně spolehlivější než to, co se pokoušíte použít vy, protože systém negarantuje, že pro každého ukončeného potomka dostanete samostatný signál. Pokud skončí více potomků téměř současně, může se stát, že signál dostanete jen jednou, takže při vašem postupu si všimnete jen jednoho.
waitpid()
v cyklu, dokud vrací nějaké potomky.
$ gcc -Wall -o sigaction sigaction.c && ./sigaction signal: [17], pid: [23071], uid: [345] done
static int shutdown = 0; static void my_action(int sig, siginfo_t *info, void *data) { shutdown = 1; if (info == NULL) { printf("signal: [%d]\n", sig); return; } printf("signal: [%d], pid: [%d], uid: [%d]\n", sig, info->si_pid, info->si_uid); } int main(int argc, char *argv[]) { struct sigaction sa; pid_t pid; memset(&sa, 0, sizeof(struct sigaction)); sa.sa_sigaction = &my_action; sa.sa_flags |= SA_SIGINFO; sigemptyset(&sa.sa_mask); sigaction(SIGCHLD, &sa, NULL); pid = fork(); if (pid == 0) { /* exit the child process */ exit(EXIT_FAILURE); } while (!shutdown) { fprintf(stdout, "running\n"); sleep(1); } fprintf(stdout, "done\n"); exit(EXIT_SUCCESS); }
sa_sigaction is not member of struct sigaction
Na čem a čím to kompilujete?
SA_SIGINFO zavedl až POSIX.1-2001.
glibc tvrdí:
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
sigaction(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
Takže pokud v ní není chyba, tak naopak děláte dobře.
Hoď do přílohy /usr/include/bits/sigaction.h
.
Není problém v:
#ifdef __USE_POSIX199309 union { /* Used if SA_SIGINFO is not set. */ __sighandler_t sa_handler; /* Used if SA_SIGINFO is set. */ void (*sa_sigaction) (int, siginfo_t *, void *); } __sigaction_handler; # define sa_handler __sigaction_handler.sa_handler # define sa_sigaction __sigaction_handler.sa_sigaction #else __sighandler_t sa_handler; #endif
Na čem to kompiluješ, jakou máš verzi gcc?
Tiskni
Sdílej: