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

Z Milan Kerslager
Přejít na: navigace, hledání
(Založení stránky)
 
m (+kat)
 
(Nejsou zobrazeny 3 mezilehlé verze od stejného uživatele.)
Řádka 1: Řádka 1:
== Č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.
 
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.
  
Řádka 7: Řá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).