PUTENV(3)

BEZEICHNUNG
putenv - eine Umgebungsvariable ändern oder hinzufügen

ÜBERSICHT
#include <stdlib.h>

int putenv(char *zeichenkette);

Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

putenv(): _SVID_SOURCE || _XOPEN_SOURCE

BESCHREIBUNG
Die Funktion putenv() fügt Umgebungsvariablen hinzu oder ändert ihren Wert. Das Argument zeichenkette hat die Form Name = Wert. Wenn Name in der Umgebung noch nicht existiert, dann wird zeichenkette zu der Umgebung hinzugefügt. Wenn Name existiert, dann wird der Wert von Name in der Umgebung auf Wert geändert. Die Zeichenkette, auf die zeichenkette zeigt, wird Teil der Umgebung, daher verändert das Abändern der Zeichenkette die Umgebung.

RÜCKGABEWERT
Die Funktion putenv() gibt bei Erfolg null zurück und einen anderen Wert als null, wenn ein Fehler auftritt. Im Fehlerfall wird errno gesetzt, um die Ursache des Fehlers anzuzeigen.

FEHLER

ENOMEM
    nicht ausreichend Speicher vorhanden, um neue Umgebung zu reservieren

KONFORM ZU
SVr4, POSIX.1-2001, 4.3BSD.

ANMERKUNGEN
Die Funktion putenv() muss nicht ablaufinvariant sein und die in Libc4, Libc5 und Glibc 2.0 ist es auch nicht, wohl aber die in Version in Glibc 2.1.

Beschreibung für Libc4, Libc5 und Glibc: Falls das Argument zeichenkette die Form Name hat und nicht das Zeichen »=« enthält, dann wird die Variable Name aus der Umgebung entfernt. Falls putenv() eine neues Feld umgebung reservieren muss und das vorherige Feld auch durch putenv() reserviert wurde, wird es freigegeben. Auf keinen Fall wird der alte Speicher freigegeben, der mit der Umgebungsvarialben selbst verbunden ist.

Die Versionen von Libc4, Libc5 und Glibc 2.1.2 sind konform zu SUSv2: Der an putenv() übergebene Zeiger zeichenkette wird benutzt. Insbesondere wird die Zeichenkette Teil der Umgebung; sie später zu ändern wird die Umgebung ändern. (Daher ist es ein Fehler putenv() mit einer automatischen Variable als Argument aufzurufen und dann von der aufrufenden Funktion zurückzukehren, während zeichenkette noch immer Teil der Umgebung ist.) Glibc 2.0-2.1.1 unterscheidet sich jedoch davon: Es wird eine Kopie der Zeichenkette benutzt. Einerseits verursacht dies ein Speicherleck, andererseits verstößt es gegen SUSv2. Dies wurde in Glibc 2.1.2 behoben.

Die 4.4BSD-Version, wie Glibc 2.0, benutzt eine Kopie.

SUSv2 entfernt die Konstante aus dem Prototyp, daher tut dies auch Glibc 2.1.3.

SIEHE AUCH
clearenv(3), getenv(3), setenv(3), unsetenv(3), environ(7)

KOLOPHON
This page is part of release 3.70 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>, Martin Schulze <joey@infodrom.org> und Chris Leick <c.leick@vollbio.de> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.