Umgebungsvariablen
-
Hallo Forum,
ich möchte in einer Klasse auf das gesammte Environment eines Programms zugreifen. Mitchar *getenv(const char *name);
kann ich nur auf Variablen zugreifen die ich kenne und mit
int main ( int argc, char** argv, char** env){/*..*/}
habe ich das Zeug nur in der main, ergo: nutzbar aber unschön.
Dann habe ich noch ( edit )#include <unistd.h> extern char **environ;
gefunden. Dass ist schon ganz schön, aber sehr C-Style und mit
#ifdef __USE_GNU extern char **environ; #endif
sehr unportabel.
Gibt es nicht eine Möglichkeit den Zeiger char** env durch einen Systencall zu ermitteln?
Danke für Tipps!Mario
PS: Sollte das hier OT sein weil es Unix spezifisch ist bitte verschieben. Ich arbeite nur unter Unix und kann nicht einschätzen was nun allgemein ist und was nicht! Danke
[ Dieser Beitrag wurde am 23.04.2003 um 12:27 Uhr von Peanut editiert. ]
-
ich möchte in einer Klasse auf das gesammte Environment eines Programms zugreifen.
Uebergib doch der Klasse beim erstellen die Variable 'env'
mfg
v R
-
Was ist das für eine main-Funktion?
Ist sowas denn portabler als das extern char** environ (wo in meiner manpage irgendwie auch gar kein KONFORM TO drin ist..) ?
-
Original erstellt von virtuell Realisticer:
**Uebergib doch der Klasse beim erstellen die Variable 'env'
**Das meinte ich mit
...nutzbar aber unschön.
Original erstellt von DrGreenthumb:
Was ist das für eine main-Funktion?#include <iostream> int main ( int argc, char** argv, char** env){ char ** var; for ( var=env; *var != NULL; ++var ) { std::cout << *var << std::endl; } }
Original erstellt von DrGreenthumb:
Ist sowas denn portabler als das extern char environ (wo in meiner manpage irgendwie auch gar kein KONFORM TO drin ist..) ?**Na du kennst den "extern char** environ" Zeiger wenigstens! Wo kommt der den her?
[ Dieser Beitrag wurde am 23.04.2003 um 14:22 Uhr von Peanut editiert. ]
-
Original erstellt von Peanut:
```cpp
#include <iostream>
int main ( int argc, char argv, char** env){
char ** var;
for ( var=env; *var != NULL; ++var ) {
std::cout << *var << std::endl;
}
}Ähm, ja. soweit war ich schon
Was ich meine ist, wer sagt ob das korrekt ist, bzw. nimmt sowas auch ein anderer Compiler als der gcc?
Normalerweise lautet die main-Funktion nur main(int, char**) oder main().Na du kennst den "extern char** environ" Zeiger wenigstens! Wo kommt der den her?
hm.. wie gesagt, meine manpage schweigt sich darüber aus. Irgendwie würde ich aber eher die Variable nehmen, als dieses ominöse main()-Konstrukt.
-
Original erstellt von DrGreenthumb:
Was ich meine ist, wer sagt ob das korrekt ist, bzw. nimmt sowas auch ein anderer Compiler als der gcc?Weiß ich. Steht in der Norm :).
Das ist POSIX (wenn ich mich recht erinnere) und damit recht portabel.[Langsam kenne ich mich nicht mehr aus: Im C++-Forum erwähnt man nur die Wortkombination 'globale Variable' und bekommt schon 10 Singleton-Empfehlungen. Hier will jemand seine lokale Variable nicht, weil es 'unschön' ist. Naja :-}.]