Čtení proměnných prostředí v jazyce C: Porovnání verzí

Z Milan Kerslager
Přejít na: navigace, hledání
m (-nadpis)
m (+kat)
 
(Nejsou zobrazeny 2 mezilehlé verze od stejného uživatele.)
Řádka 5: Řádka 5:
 
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).
 
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
+
  export CISLO=69
    2 BAF="Nejaky text"
+
  BAF="Nejaky text"
    3 export BAF
+
  export BAF
  
 
Následující program vypíše obsah proměnné <CODE>BAF</CODE> nebo napíše, že proměnná není definována. Používá k tomu funkci <CODE>getenv()</CODE>.
 
Následující program vypíše obsah proměnné <CODE>BAF</CODE> nebo napíše, že proměnná není definována. Používá k tomu funkci <CODE>getenv()</CODE>.
  
    1  #include <stdio.h>
+
<source lang="c">
    2  #include <stdlib.h>
+
#include <stdio.h>
    3  int main()
+
#include <stdlib.h>
    4  {
+
 
    5    char *pointer;
+
int main()
    6    pointer = getenv("BAF");
+
{
    7    if (pointer == NULL) {
+
  char *pointer;
    8      printf("Promenna BAF neexistuje\n");
+
  pointer = getenv("BAF");
    9    } else {
+
  if (pointer == NULL) {
     10      printf("Promenna BAF obsahuje: %s\n", pointer);
+
    printf("Promenna BAF neexistuje\n");
    11    }
+
  } else {
    12    return 0;
+
     printf("Promenna BAF obsahuje: %s\n", pointer);
    13  }
+
  }
 +
  return 0;
 +
}
 +
</source>
 +
 
 +
== Cvičení ==
 +
 
 +
;Příklad 1: Napište program, který vypíše proměnnou, kterou zadáte jako parametr.
 +
 
 +
;Příklad 2: Napište program, který vypíše všechny nastavené proměnné (obdobu programu '''printenv''').
 +
 
 +
[[Kategorie:Jazyk C v Linuxu]]

Aktuální verze z 6. 4. 2009, 20:39

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

export CISLO=69
BAF="Nejaky text"
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().

#include <stdio.h>
#include <stdlib.h>

int main()
{
  char *pointer;
  pointer = getenv("BAF");
  if (pointer == NULL) {
    printf("Promenna BAF neexistuje\n");
  } else {
    printf("Promenna BAF obsahuje: %s\n", pointer);
  }
  return 0;
}

Cvičení

Příklad 1
Napište program, který vypíše proměnnou, kterou zadáte jako parametr.
Příklad 2
Napište program, který vypíše všechny nastavené proměnné (obdobu programu printenv).