Skocz do zawartości

Zmienne środowiskowe


Andrzej Orkan

Rekomendowane odpowiedzi

Mam pytanie, dlaczego w programie w C linijka

 

#include <stdlib.h>
...
printf("%s\n%s\n",getenv("MAIL"),getenv("MAILCHECK"));

 

daje efekt

 

$ ./program
/var/spool/mail/orkan
(null)
$ 

 

skoro jak byk stoi po wydaniu komendy set

 

$ set
...
MACHTYPE=i686-redhat-linux-gnu
MAIL=/var/spool/mail/orkan
MAILCHECK=60
OPTERR=1
...

 

Czy nie wszystkie zmienne systemowe dostępne są przez getenv()? W jaki inny sposób mógłbym dotrzeć do zmiennej MAILCHECK?

Odnośnik do komentarza
Udostępnij na innych stronach

Gość amdfanatyk

jako trzeci argument funkcji main() masz wskazanie do tablicy char, elementami tej tablicy sa wlasnie zmienne srodowiskowe:

 

#include <iostream>

int main(int argc, char ** argv, char ** env)
{
    int i = 0;
    while (env[i])
        std::cout << env[i++] << "\n";

    return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

jako trzeci argument funkcji main() masz wskazanie do tablicy char, elementami tej tablicy sa wlasnie zmienne srodowiskowe:

 

Dziex, wiem o tym, tylko zastanawiam się dlaczego wśród char** env nie ma pewnych zmiennych, które wyświetlają się po wydaniu komendy "set", tudzież zastanawiam się jak do nich dotrzeć...

 

Odnośnik do komentarza
Udostępnij na innych stronach

Hej.

 

moze jednak nie masz zdefiniowanej tej zmiennej. Polecenie "getenv" zwraca chyba tylko wartosci tych zmiennych, ktore mozna zobaczyc przy uzyciu komendy "env".

 

U mnie zadzialalo to tak:

 

 

kozak ~$ set | grep MAILCHECK

MAILCHECK=60

kozak ~$ env | grep MAILCHECK

kozak ~$

 

Moze w tym tkwi problem.

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Dzieki, przetestowałem program w różnych środowiskach i nie zawsze MAILCHECK jest dostępny. Trzeba z tym jakoś żyć :)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...