Čtení proměnných prostředí v jazyce C

Z Milan Kerslager
Verze z 22. 2. 2008, 16:44, kterou vytvořil Milan.Kerslager (diskuse | příspěvky) (Založení stránky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Čtení proměnných prostředí v jazyce C

Proměnné prostředí jsou speciální proměnné, které se dědí do nových procesů – potomků. S jejich pomocí mohou rodičovské procesy předávat potomkům užitečné informace. Pokud v příkazovém řádku (shell) nastavíme proměnnou, je známa jen a právě v tom shellu, ve kterém jsme ji použili. Pokud pak spustíme nějaký program nebo shellový skript, proměnná již nebude dostupná, protože spuštěný program je potomkem shellu.

Chceme-li nějakou proměnnou dědit do procesů potomků, musíme ji v shellu tzv. vyexportovat, aby se z ní stala proměnná prostředí. Tímto způsobem se standardně ovlivňuje například barevné podání výpisů souborů v adresáři pomocí příkazu ls (proměnná LS_COLORS), jaký editor se má spustit v programech mutt, crontab atp. (proměnné VISUAL nebo EDITOR).

Proměnnou můžeme exportovat ihned při jejím naplnění (řádek 1) nebo dodatečně bez vlivu na její obsah (řádek 2 až 3).

    1  export CISLO=69
    2  BAF="Nejaky text"
    3  export BAF

Následující program vypíše obsah proměnné BAF nebo napíše, že proměnná není definována. Používá k tomu funkci getenv().

    1  #include <stdio.h>
    2  #include <stdlib.h>
    3  int main()
    4  {
    5    char *pointer;
    6    pointer = getenv("BAF");
    7    if (pointer == NULL) {
    8      printf("Promenna BAF neexistuje\n");
    9    } else {
   10      printf("Promenna BAF obsahuje: %s\n", pointer);
   11    }
   12    return 0;
   13  }