putenv()

putenv() ist in der 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 <stdio.h>
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 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 <stdio.h>
#include <stdlib.h>
 
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