Helmut Schellong
2016-09-09 09:38:06 UTC
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().
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 ***@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
Mit freundlichen Grüßen
Helmut Schellong ***@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm