abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:22 | IT novinky

    Slovensko odhalilo ruské součástky ve dvou testovaných zařízeních na zjišťování přestupků v silničním provozu a označilo je za bezpečnostní riziko. S odvoláním na vyjádření slovenského Národního bezpečnostního úřadu (NBÚ) to včera oznámil ministr vnitra Matúš Šutaj Eštok. Zároveň ohlásil ukončení spolupráce svého úřadu s dodavatelem části uvedeného systému, slovenskou společností Soitron. Opozice, která na problematické kamery upozornila už dříve, vyzvala k odvolání ministra vnitra.

    Ladislav Hagara | Komentářů: 0
    dnes 06:00 | IT novinky

    Dle plánu dnes ve 13:00 proběhne veřejný test eDokladů. Jeho cílem je ověřit připravenost aplikace a související infrastruktury na vysokou souběžnou zátěž před podzimními komunálními volbami.

    Ladislav Hagara | Komentářů: 10
    dnes 04:11 | Nová verze

    Byla vydána nová verze 3.47 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.13 souvisejícího programovacího jazyka Dart (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    dnes 04:00 | Nová verze

    Byla vydána nová verze 26.1 linuxové distribuce Manjaro (Wikipedie). Její kódové jméno je Bian-May. Ke stažení je v edicích GNOME, KDE PLASMA a XFCE.

    Ladislav Hagara | Komentářů: 0
    včera 19:00 | IT novinky

    Na akci Made by Google 2026 (YouTube) byla oficiálně představena jedenáctá generace telefonů Pixel s novým čipem Google Tensor G6 a hodinky Pixel Watch 5.

    Ladislav Hagara | Komentářů: 1
    včera 17:11 | Bezpečnostní upozornění

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) se spolu s partnery z dalších zemí připojil ke společnému upozornění (Joint Cybersecurity Advisory) týkajícímu se probíhající kybernetické kampaně skupiny LAUNDRY BEAR zaměřené na uživatele e-mailové platformy Zimbra Collaboration Suite (ZCS) nejméně od července 2025. NÚKIB doporučuje organizacím využívajícím Zimbra Collaboration Suite neprodleně ověřit, zda

    … více »
    Ladislav Hagara | Komentářů: 2
    včera 14:22 | Nová verze

    Intel vydal 42 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20260811 mikrokódů pro své procesory.

    Ladislav Hagara | Komentářů: 0
    včera 05:33 | Zajímavý článek

    Sny o designu GNOME Shellu, článek s náhledy a videi, představuje dlouhodobou vizi týmu GNOME pro vylepšení uživatelského rozhraní GNOME Shellu. Zatímco nedávné verze přinášely spíše drobné úpravy, designéři nyní plánují zásadnější změny.

    Ladislav Hagara | Komentářů: 14
    včera 05:22 | Nová verze

    Byla vydána nová verze 10.5 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu důležitých bezpečnostních oprav, vylepšení funkcí a oprav chyb. Nově vyžaduje podporu ECC (Elliptic Curve Cryptography) v libcrypto, včetně křivky NISTP521.

    Ladislav Hagara | Komentářů: 0
    včera 05:11 | Nová verze

    Byla vydána nová verze 10.6 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. S novými obrazy pro Orange Pi 4 Pro, Orange Pi Zero 3W a Odroid M1/M1S/M2. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (18%)
     (30%)
     (6%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2379 hlasů
     Komentářů: 31, poslední dnes 00:27
    Rozcestník


    Dotaz: ziskani hodnoty systemove promenne v C

    17.5.2007 16:23 pavel
    ziskani hodnoty systemove promenne v C
    Přečteno: 297×
    Ahoj,

    potreboval bych ziskat hodnotu systemove promenne v jazyce C.

    Jde to nejak.

    Dik moc.

    Odpovědi

    17.5.2007 16:24 outsider
    Rozbalit Rozbalit vše Re: ziskani hodnoty systemove promenne v C
    http://www.gnu.org/software/libc/manual/html_node/Environment-Variables.html#Environment-Variables
    18.5.2007 00:02 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: ziskani hodnoty systemove promenne v C

    Primitivní způsob přístupu

    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í.

    Sofistikovanější způsob přístupu

    • 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.

    Tři užitečné poznámky

    • 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ů.

    A ještě snipplet na závěr

    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... ;-)

    18.5.2007 00:05 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: ziskani hodnoty systemove promenne v C

    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.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.