Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).
Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.
Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.
Byla publikována Výroční zpráva Blender Foundation za rok 2024 (pdf).
Byl vydán Mozilla Firefox 143.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově se Firefox při ukončování anonymního režimu zeptá, zda chcete smazat stažené soubory. Dialog pro povolení přístupu ke kameře zobrazuje náhled. Obzvláště užitečné při přepínání mezi více kamerami. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 143 bude brzy k dispozici také na Flathubu a Snapcraftu.
Byla vydána betaverze Fedora Linuxu 43 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 21. října.
Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.2 (𝕏, Mastodon). Přehled novinek, vylepšení a nových efektů v poznámkách k vydání.
Byla vydána nová verze 4.5 (𝕏, Bluesky, Mastodon) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.
Řešení dotazu:
#define NAZEV "out.txt"
int main()
{
FILE *soubor;
soubor = fopen(NAZEV, "a+");
int roura[2];
pipe(roura);
pid_t pid1;
int retcode;
pid1=fork();
if(pid1 == 0) // potomek1
{
close(roura[0]);
printf("Potomek1...\n");
dup2(roura[1], STDOUT_FILENO); // presmerovani výstupu do roury
int i = 0;
while(i < 6)
{
i++;
int a = 2 + i;
int b = 4 + i;
sleep(1);
printf("%d %d\n", a, b);
}
close(roura[1]);
exit(45);
} else if (pid1 < 0)
{
printf("Fork selhal\n");
exit(2);
} else
{
pid_t pid2;
pid2 = fork();
if (pid2 == 0) //potomek 2
{
close(roura[1]);
dup2(roura[0], STDIN_FILENO); //presmerovani výstup roury na svůj standardní vstup
printf("Potomek2...\n");
int i = 0;
while(i < 5)
{
i++;
int c;
int d;
scanf("%d %d", &c, &d);
printf("%d %d\n", c, d);
fprintf(soubor,"%d %d\n", c, d);
}
printf("Potomek2 skoncil\n");
exit(0);
} else if (pid2 < 0)
{
printf("Fork selhal\n");
exit(2);
}else
{ wait(&pid1); //ceka na potomka1
wait(&pid2); //ceka na potomka2
printf("Rodic konci\n");
exit(0);
}
}
exit(0);
}
sigaction
někam poznamená, že přišel signál. Ten proces bude v tu dobu nejspíš viset na sleep
, který příchozí signál přeruší s EINTR
, ale nemusí, takže je vhodné to otestovat i před tím sleep
em. Stačí se pak podívat, jestli byl poznamenán příchod signálu, a pokud ano, tak proces ukončit. Pokud nepotřebujete po přerušení uklidit, tak ukončit proces jde i ze sigaction
pomocí _exit()
.
Mimochodem pokud potřebujete zastavit zapisující proces ze čtecího, stačí ve čtecím procesu tu rouru zavřít. Zapisovací proces pak při pokusu o zápis dostane SIGPIPE
.
Tiskni
Sdílej: