Čtení proměnných prostředí v jazyce C: Porovnání verzí
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). | ||
| − | + | export CISLO=69 | |
| − | + | BAF="Nejaky text" | |
| − | + | 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>. | ||
| − | + | <source lang="c"> | |
| − | + | #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; | ||
| + | } | ||
| + | </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).