====== putenv() ====== ''putenv()'' ist in der ''[[c:lib:stdlib:start|stdlib]]'' definiert, die in C über ''stdlib.h'', bzw in C++ über ''cstdlib'' eingebunden wird. ===== Funktion ===== ''putenv()'' manipuliert eine Systemvariable oder fügt sie dem [[Enviroment]] hinzu. ===== Signatur ===== #include int putenv( char const * string ); **string**: Name und Wert der Systemvariablen \\ \\ **Return Value**: 0 bei Erfolg, im Fehlerfall einen Wert ungleich 0. Die Strings werden in der Form ''name=value'' gehalten. ===== Fehlerquellen ===== Der übergebene Pointer zeigt auf einen String, der nun Teil des [[Enviroment|Enviroments]] wird. Das bedeutet, dass der String nun nicht mehr verändert oder gelöscht werden darf, solange er dem Enviroment zugehört. ===== Beispiel ===== #include #include int main (void) { char *user; char newUser[] = "USER=Ausgetauscht"; user = getenv( "USER" ); printf( "Dieser Prozess wurde vom Benutzer '%s' gestartet.\n", user ); if( putenv( newUser )) printf( "Variable USER konnte nicht ausgetauscht werden.\n" ); user = getenv( "USER" ); printf( "USER entspricht nun '%s'.\n", user ); // GetEnv bekommt den Text "Ausgetauscht" aus newUser, entsprechend // sollte die Variable 5 Zeichen ("HOME=" wird übersprungen) // hinter den Beginn von newUser zeigen: if( user == newUser+5 ) printf( "'user' zeigt in den Speicherbereich der Variable 'newUser'\n" ); return EXIT_SUCCESS; } **Ausgabe** \\ Dieser Prozess wurde vom Benutzer 'xin' gestartet. USER entspricht nun 'Ausgetauscht'. 'user' zeigt in den Speicherbereich der Variable 'newUser' Nachdem das Programm beendet wurde, wird der Text aus ''newUser'' verworfen. Das macht aber nichts, da damit auch alle Prozesse sterben, die Teile dieses [[Enviroments]] geerbt haben und dieses Enviroment danach vollständig gelöscht wird. ===== siehe auch ===== [[c:lib:stdlib:]]: [[clearenv()]], [[getenv()]], [[setenv()]], [[unsetenv()]], [[c:lib:stdlib:Enviroment]]