====== setenv() ====== ''setenv()'' ist in der ''[[c:lib:stdlib:start|stdlib]]'' definiert, die in C über ''stdlib.h'', bzw in C++ über ''cstdlib'' eingebunden wird. ===== Funktion ===== ''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()]]. ===== Signatur ===== #include 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 | ===== Fehlerquellen ===== - ===== Beispiel ===== #include #include 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'. ===== siehe auch ===== [[c:lib:stdlib:]]: [[clearenv()]], [[getenv()]], [[putenv()]], [[unsetenv()]], [[c:lib:stdlib:Enviroment]]