extern char **environ;

09/09/2016 - 11:38 von Helmut Schellong | Report spam
E n v i r o n m e n t
PATH=ppppppp etc.

Unter Windows das Kommando 'set' und unter Unix 'env'
liefern den Inhalt des sogenannten Environments.

Stets das aktuelle Environment liefert 'extern char **environ'.
Das ist ein Pointer auf 'extern char *env[n]'.
In env[] sind Zeichenketten "name=inhalt" eingehàngt.
Der Name env[] ist ausgedacht, der reale Name ist unbekannt.

int main(int argc, char **argv, char **envp);
Hier das Environment per envp zum Startzeitpunkt.

execve(..., envp);
Ein eigenes Environment für den neuen Prozeß.

Ich frage mich nur, was ich - ganz genau - von
Any application that directly modifies the pointers to which
the environ variable points has undefined behavior.
zu halten habe.
Ich modifiziere environ nàmlich direkt, seit 1995, ohne Probleme.
environ modifiziere ich nicht, aber *environ.

Zum Löschen einer Env-Variablen mache ich:
vorher:
A=aaaaaaaaa
B=bbbbbbbbb
C=ccccccccc
NULL

nachher:
A=aaaaaaaaa
C=bbbbbbbbb
NULL
NULL

Funktioniert makellos.
Muß es IMO auch.

Zum Setzen verwende ich allerding putenv(), setenv().



Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
 

Lesen sie die antworten

#1 G.B.
09/09/2016 - 11:52 | Warnen spam
On 09/09/16 11:38, Helmut Schellong wrote:
Funktioniert makellos.
Muß es IMO auch.



I.S.v. enthalten in: "es muss undefiniertes Verhalten zeigen"?

Ähnliche fragen