getenv, getenv_s
|
Definiert in Header
<stdlib.h>
|
||
|
char
*
getenv
(
const
char
*
name
)
;
|
(1) | |
|
errno_t getenv_s
(
size_t
*
restrict
len,
char
*
restrict
value,
rsize_t valuesz, const char * restrict name ) ; |
(2) | (seit C11) |
getenv
, sowie ein Aufruf der POSIX-Funktionen
setenv()
,
unsetenv()
und
putenv()
kann den von einem vorherigen Aufruf zurückgegebenen Zeiger ungültig machen oder die Zeichenkette aus einem vorherigen Aufruf modifizieren.
getenv
zurückgegeben wird, ruft undefiniertes Verhalten hervor.
-
- name ist ein null pointer
- valuesz ist größer als RSIZE_MAX
- value ist ein null pointer und valuesz ist nicht null
-
Wie bei allen bounds-checked functions ist
getenv_snur garantiert verfügbar, wenn __STDC_LIB_EXT1__ durch die Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT1__ auf den Integer-Konstantenwert 1 setzt, bevor <stdlib.h> eingebunden wird.
Inhaltsverzeichnis |
Parameter
| name | - | nullterminierte Zeichenkette, die den Namen der zu suchenden Umgebungsvariable identifiziert |
| len | - |
Zeiger auf einen benutzerbereitgestellten Speicherort, an dem
getenv_s
die Länge der Umgebungsvariable speichern wird
|
| value | - |
Zeiger auf ein benutzerbereitgestelltes Zeichenarray, in dem
getenv_s
den Inhalt der Umgebungsvariable speichern wird
|
| valuesz | - |
maximale Anzahl von Zeichen, die
getenv_s
in
dest
schreiben darf (Größe des Puffers)
|
Rückgabewert
Hinweise
Auf POSIX-Systemen sind die
Umgebungsvariablen
auch über die globale Variable
environ
zugänglich, deklariert als
extern
char
**
environ
;
in
<unistd.h>
, sowie über den optionalen dritten Parameter,
envp
, der
main-Funktion
.
Der Aufruf von
getenv_s
mit einem Nullzeiger für
value
und null für
valuesz
wird verwendet, um die Größe des Puffers zu bestimmen, der benötigt wird, um das gesamte Ergebnis aufzunehmen.
Beispiel
#include <stdio.h> #include <stdlib.h> int main(void) { const char *name = "PATH"; const char *env_p = getenv(name); if (env_p) printf("Your %s is %s\n", name, env_p); }
Mögliche Ausgabe:
Your PATH is /home/gamer/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/share/games
`-Tags wurden unverändert belassen - C++ spezifische Begriffe wie "PATH", "getenv", "printf" wurden nicht übersetzt - Die Formatierung und Struktur der HTML-Elemente wurde vollständig beibehalten
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 7.22.4.6 Die getenv-Funktion (S.: TBD)
-
- K.3.6.2.1 Die getenv_s-Funktion (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.22.4.6 Die getenv-Funktion (S: 256-257)
-
- K.3.6.2.1 Die getenv_s-Funktion (S: 440-441)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.22.4.6 Die getenv-Funktion (S. 352-353)
-
- K.3.6.2.1 Die getenv_s-Funktion (S. 606-607)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.20.4.5 Die getenv-Funktion (S. 317)
- C89/C90 Standard (ISO/IEC 9899:1990):
-
- 4.10.4.4 Die getenv-Funktion
Siehe auch
|
C++ Dokumentation
für
getenv
|