Canonical oznámil vydání Zephyr 26.04 LTS. Jedná se o komerční distribuci operačního systému pro mikrokontroléry Zephyr (Wikipedie) s podporou až 15 let.
Gravity Linux je linuxová distribuce určená pro Apple Silicon s čipy M4 a novějšími. Vydána byla alfa verze pro M4 Mac mini. Gravity Linux je fork Asahi Linuxu.
Hister je osobní soukromý vyhledávač, který lze provozovat na vlastním stroji. Umí prohledávat lokální soubory, importovat historii a záložky z webových prohlížečů, procházet vybrané weby a pomocí rozšíření pro Firefox a Chrome indexovat obsah právě navštívených stránek. Nad vytvořeným indexem pak nabízí vyhledávání prostřednictvím webového rozhraní, příkazové řádky a díky podpoře MCP i nástrojům umělé inteligence. Tento
… více »Ministerstvo dopravy uznalo prozatímní schválení asistenčního systému Tesla FSD Supervised vydané nizozemským schvalovacím orgánem RDW. Připojilo se tak k Nizozemsku a dalším pěti evropským státům. Systém je díky tomuto rozhodnutí možné používat za podmínek prozatímního schválení také na území České republiky. Tesla FSD Supervised je asistenčním systémem úrovně 2 podle klasifikace SAE (částečná automatizace řízení). Řidič se
… více »Někteří zákazníci O2 mohou aktuálně zaznamenat zhoršenou dostupnost internetových služeb. Na odstranění potíží se pracuje [Facebook].
PyPy (Wikipedie), tj. implementace Pythonu v RPythonu, alternativa CPythonu v C, byla vydána v nové major verzi 8.0.0. Podporuje Python 2.7, 3.11 a 3.12.
V jádře Linux byly nalezeny a v upstremu ve verzích 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50 a 7.2.4 již opraveny 4 kritické zranitelnosti umožňující eskalaci práv: DirtyAH6 (CVE-2026-80844), TUNderflow (CVE-2026-81000), PPPoEject (CVE-2026-68121) a DiagSpill (CVE-2026-74469).
Německá policie a celníci zneužívají ke čtení zpráv komunikačních aplikacích WhatsApp, Signal, Telegram nebo Threema velice jednoduchý trik, který nevyžaduje prolomení šifrování, spear phishing, odposlech SMS či jinou technicky náročnou metodu. Příslušníkům státního aparátu pouze stačí získat krátký přístup k odemčenému telefonu a prostřednictvím QR kódu propojit účet s oficiální desktopovou nebo webovou aplikací v policejním
… více »Počítačová hra Factorio (Wikipedie) nově běží nativně na ARM64 Linuxu a headsetu Steam Frame.
Nuže, zkus třeba takovýto snipplet:
#include<stdio.h>
int main( int argc, char **argv, char **env ) {
for ( ; *env; ++env ) puts( *env );
}
Nebo třeba takhle, což je (?) totéž... (Kdyžtak to tu někdo upřesní...)
#include<stdio.h>
extern char **environ;
int main( void ) {
for ( ; *environ; ++environ ) puts( *environ );
}
To byly jen houpé příklady pro přehled. Pro lepší manipulaci je dobré udělat #include<stdlib.h> a využít jednu z následujících funkcí.
int putenv(char *string); (man 3 putenv) přijímá string tvaru NÁZEV=HODNOTA a nastaví ho. String nekopíruje, pouze přidá pointer. Musí jít o trvale existuící string, nikoliv jen o dočasné pole na zásobníku. Existující proměnné přepíše.
int setenv(const char *name, const char *value, int overwrite); (man 3 setenv) dělá totéž, jen vybranějším způsobem. Parametr overwrite určuje, zda má v případě konfliktu názvů původní proměnnou přepsat. Tím se liší od předchozí funkce, která přepisuje vždy. Další rozdíl je, že string okopíruje. Není tedy nutné, aby za běhu existoval trvale. V případě, že je příliš dlouhý, vrátí hodnotu -1.
int unsetenv(const char *name); (man 3 unsetenv) Tady je to jasné.
Příčina případné chyby bude v ERRNO.
char *getenv(const char *name); (man 3 getenv) Vyhledá název. Vrátí buď pointer na hodnotu nebo NULL, podle toho, zda taková proměnná existuje.
Změna je lokální v současném procesu. Nepřenáší se zpět do jeho otce.
Změněné proměnné se předávají nově vzniklým synovským procesům.
Změna se nepřenáší do již běžících synovských procesů.
Takhle bys to mohl třeba použít, stačí přidat jen ošetření případných chybových stavů.
#include<stdio.h>
#include<stdio.h>
static const char *const NOTSET = "VARIABLE NOT SET";
static const char *const USER = "USER";
static void output( char *const value ) {
puts( value == NULL ? NOTSET : value );
}
int main( void ) {
output( getenv( USER ) ); /* skutečný uživatel */
putenv( "USER=vincenc" );
output( getenv( USER ) ); /* 'vincenc' - přepsáno */
setenv( USER, "hugo", 0 );
output( getenv( USER ) ); /* 'vincenc' - nepřepsáno */
setenv( USER, "hugo", 1 );
output( getenv( USER ) ); /* 'hugo' - přepsáno */
unsetenv( USER );
output( getenv( USER ) ); /* 'VARIABLE NOT SET' - smazáno */
}
Uf, to je vše. Ale příště zkus radši napřed Google, protože tohle není příliš složitá otázka... 
K tomu poslednímu snippletu: mám tam omylem dvakrát stejný include. Jak jsem zjistil, stdlib.h v tomto případě není nutné includovat - stačí stdio.h.
Tiskni
Sdílej: