setenv()
ist in der stdlib
definiert, die in C über stdlib.h
, bzw in C++ über cstdlib
eingebunden wird.
setenv()
erstellt im Enviroment eine Systemvariable oder tauscht ihren Wert durch einen neuen Wert aus. Die übergebenen String werden durch setenv() in einen neuen String kopiert (im Gegensatz zu putenv().
#include <stdlib.h> int setenv( char const * name, char const * value, int override );
name: Name der Systemvariablen
value: Wert der Systemvariablen
overwrite: Falls der Variablenname bereits existiert wird der Wert nur dann überschrieben, wenn overwrite ungleich 0 ist.
Return Value: 0 bei Erfolg, im Fehlerfall den Wert -1, wobei ein errno gesetzt wird:
errno | Bedeutung | |
---|---|---|
EINVAL | Invalid Value: name ist NULL, zeigt auf einen leeren String oder enthält ein '='-Zeichen | |
ENOMEN | No Memory: Nicht genug Speicher, um die Variable zu erzeugen |
-
#include <stdio.h> #include <stdlib.h> int main (void) { char *user; char const * varname = "USER"; user = getenv( varname ); printf( "Dieser Prozess wurde vom Benutzer '%s' gestartet.\n", user ); if( setenv( varname, "proggen.org", 0 )) printf( "Nicht überschreiben: Funktion meldet Fehler\n" ); user = getenv( varname ); printf( "Nicht überschreiben: USER entspricht nun '%s'.\n", user ); if( setenv( varname, "proggen.org", 1 )) printf( "Überschreiben: Funktion meldet Fehler\n" ); user = getenv( varname ); printf( "Überschreiben: USER entspricht nun '%s'.\n", user ); return EXIT_SUCCESS; }
Ausgabe
Dieser Prozess wurde vom Benutzer 'xin' gestartet. Nicht überschreiben: USER entspricht nun 'xin'. Überschreiben: USER entspricht nun 'proggen.org'.