getenv() gibt immer NULL zurück

Post Reply
Message
Author
Boron

getenv() gibt immer NULL zurück

#1 Post by Boron »

Servus,

mit getenv() kann den Wert einer Umgebungsvariable in ein C/C++-Programm übernehmen. Das sagt zumindest die manpage.
Wenn ich nun die "Auflösung" einer Konsole (sollte meist bei 80x25 sein) herausfinden will, frage ich doch einfach nach den Umgebungsariablen LINES und COLUMNS (wenns nicht stimmt bitte korrigieren)? Also etwa so: <blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">char* lines = getenv( "LINES");
char* cols = getenv( "COLUMNS");</font><hr></pre></blockquote>Wenn ich auf der Konsole "echo $LINES $COLUMNS" eingebe kommt als Ergebnis auch "25 80" heraus.
Der Rückgabe wert von getenv() sollte ein Zeiger auf den Wert der Variablen liefern. Wenn ich nun z.B. int zahl = atoi( lines) ausführen will sollte eigentlich zahl den Wert 25 bekommen. Bei mir allerdings wird immer NULL von getenv() zurückgegeben.
Sobald das Programm also das atoi( lines) ausführen will habe ich immer einen Speicherzugriffsfehler (der Compiler läuft wunderbar durch).

Kann auf die Umgebungsvariablen LINES und COLUMNS evtl. gar nicht zugegriffen werden(ich will ja nur lesen)?
Wenn ja, gibt es andere Möglichkeiten die "Auflösung" einer Konsole in C++ festzustellen?

Danke
Gruss Boron

Jochen

Re: getenv() gibt immer NULL zurück

#2 Post by Jochen »

Nur testeshalber: Mach mal vor Aufruf Deines Programmes ein "export LINES COLUMNS". Erst dadurch wird aus den Shell-Variablen Environment-Variablen...

Jochen

Boron

Re: getenv() gibt immer NULL zurück

#3 Post by Boron »

Genau das wars. Danke Jochen.
So und jetzt habe ich sogar gelernt, dass es nicht nur Umgebungsvariablen gibt, sondern auch noch Shellvariablen.

Post Reply