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í
×
    včera 19:44 | Nová verze

    Byla vydána verze 9.1 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a informačním videu.

    Ladislav Hagara | Komentářů: 1
    včera 17:44 | IT novinky

    Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,809 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější superpočítač v Evropě JUPITER Booster s výkonem 1,000 exaFLOPS je na čtvrtém místě. Nejvýkonnější český superpočítač C24 klesl na 192. místo. Karolina, GPU partition klesla na 224. místo a Karolina, CPU partition na 450. místo. Další přehledy a statistiky na stránkách projektu.

    Ladislav Hagara | Komentářů: 1
    včera 17:22 | IT novinky

    Microsoft představil Azure Cobalt 200, tj. svůj vlastní SoC (System-on-Chip) postavený na ARM a optimalizovaný pro cloud.

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

    Co způsobilo včerejší nejhorší výpadek Cloudflare od roku 2019? Nebyl to kybernetický útok. Vše začalo změnou oprávnění v jednom z databázových systémů a pokračovalo vygenerováním problém způsobujícího konfiguračního souboru a jeho distribucí na všechny počítače Cloudflare. Podrobně v příspěvku na blogu Cloudflare.

    Ladislav Hagara | Komentářů: 3
    18.11. 23:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) první RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.

    Ladislav Hagara | Komentářů: 0
    18.11. 23:22 | Komunita

    Eugen Rochko, zakladatel Mastodonu, tj. sociální sítě, která není na prodej, oznámil, že po téměř 10 letech odstupuje z pozice CEO a převádí vlastnictví ochranné známky a dalších aktiv na neziskovou organizaci Mastodon.

    Ladislav Hagara | Komentářů: 0
    18.11. 19:44 | Nová verze

    Byla vydána nová major verze 5.0 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v obsáhlých poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    18.11. 14:00 | Upozornění

    Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.

    Ladislav Hagara | Komentářů: 13
    18.11. 04:22 | Pozvánky

    Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou

    … více »
    SoutezKasiopea | Komentářů: 1
    18.11. 04:11 | Nová verze

    Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (23%)
     (15%)
     (23%)
     (15%)
     (17%)
    Celkem 371 hlasů
     Komentářů: 17, poslední včera 21:57
    Rozcestník

    Dotaz: ziskani hodnoty systemove promenne v C

    17.5.2007 16:23 pavel
    ziskani hodnoty systemove promenne v C
    Přečteno: 180×
    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.