getenv, getenv_s
|
Определено в заголовочном файле
<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) | (начиная с C11) |
getenv
, а также вызов POSIX-функций
setenv()
,
unsetenv()
и
putenv()
может сделать недействительным указатель, возвращенный предыдущим вызовом, или изменить строку, полученную из предыдущего вызова.
getenv
приводит к неопределённому поведению.
-
- name является нулевым указателем
- valuesz больше RSIZE_MAX
- value является нулевым указателем и valuesz не равен нулю
-
Как и все функции с проверкой границ,
getenv_sгарантированно доступна только если __STDC_LIB_EXT1__ определена реализацией и если пользователь определяет __STDC_WANT_LIB_EXT1__ как целочисленную константу 1 до включения <stdlib.h> .
Содержание |
Параметры
| name | - | строка символов с нулевым окончанием, идентифицирующая имя переменной окружения для поиска |
| len | - |
указатель на предоставленное пользователем место, где
getenv_s
сохранит длину переменной окружения
|
| value | - |
указатель на предоставленный пользователем массив символов, где
getenv_s
сохранит содержимое переменной окружения
|
| valuesz | - |
максимальное количество символов, которое
getenv_s
разрешено записать в
dest
(размер буфера)
|
Возвращаемое значение
Примечания
В системах POSIX
переменные окружения
также доступны через глобальную переменную
environ
, объявленную как
extern
char
**
environ
;
в
<unistd.h>
, и через необязательный третий аргумент
envp
функции
main
.
Вызов
getenv_s
с нулевым указателем для
value
и нулевым значением для
valuesz
используется для определения размера буфера, необходимого для хранения полного результата.
Пример
#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); }
Возможный вывод:
Your PATH is /home/gamer/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/share/games
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.22.4.6 Функция getenv (стр.: TBD)
-
- K.3.6.2.1 Функция getenv_s (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.22.4.6 Функция getenv (стр. 256-257)
-
- K.3.6.2.1 Функция getenv_s (стр. 440-441)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.22.4.6 Функция getenv (стр. 352-353)
-
- K.3.6.2.1 Функция getenv_s (стр. 606-607)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.20.4.5 Функция getenv (стр: 317)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 4.10.4.4 Функция getenv
Смотрите также
|
Документация C++
для
getenv
|