setenv()

setenv() ist in der 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 <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

Fehlerquellen

-

Beispiel

#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'.   

siehe auch