Scroll to navigation

getenv(3) Library Functions Manual getenv(3)

НАИМЕНОВАНИЕ

getenv, secure_getenv - возвращают значения переменной окружения

БИБЛИОТЕКА

Стандартная библиотека языка C (libc-lc)

ОБЗОР

#include <stdlib.h>
char *getenv(const char *name);
char *secure_getenv(const char *name);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

secure_getenv():


_GNU_SOURCE

ОПИСАНИЕ

Функция getenv() ищет в списке окружения переменную окружения name и возвращает указатель на соответствующую строку value.

The secure_getenv() function is just like getenv() except that it returns NULL in cases where "secure execution" is required. Secure execution is required if one of the following conditions was true when the program run by the calling process was loaded:

эффективный пользовательский ID процесса не совпадает с реальным пользовательским ID или эффективный групповой ID процесса не совпадает с реальным групповым ID (обычно в результате выполнения программы с установленным битом set-user-ID или set-group-ID);
у исполняемого файла установлен эффективный мандатный бит; или
у процесса имеется непустой ограничивающий набор мандатов.

Безопасное выполнение также может требоваться некоторыми модулями безопасности Linux.

Функция secure_getenv() предназначена для библиотек общего назначения с целью недопущения уязвимостей, которые могли бы возникнуть, если программы с битом set-user-ID или set-group-ID ненамеренно доверяли бы окружению.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функция getenv() возвращает указатель на значение в окружении или NULL, если ничего не найдено.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
getenv(), secure_getenv() Безвредность в нитях MT-Safe env

СТАНДАРТЫ

C11, POSIX.1-2008.
POSIX.1-2024.

ИСТОРИЯ

POSIX.1-2001, C89, C99, SVr4, 4.3BSD.
POSIX.1-2024, glibc 2.17.

ПРИМЕЧАНИЯ

Строки в списке окружения имеют вид имя=значение.

В типичной реализации getenv() возвращает указатель на строку в списке окружения. Вызывающий не должен изменять эту строку, так как это изменить окружение процесса.

Реализации getenv() не требуется быть реентерабельной. Строка, указанная в возвращаемом значение getenv(), может быть выделена статически и может изменяться после вызова getenv() с помощью putenv(3), setenv(3) или unsetenv(3).

Режим «безопасного выполнения» в secure_getenv() управляется флагом AT_SECURE вспомогательного вектора, передаваемого из ядра в пользовательское пространство.

СМОТРИТЕ ТАКЖЕ

clearenv(3), getauxval(3), putenv(3), setenv(3), unsetenv(3), capabilities(7), environ(7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.

29 октября 2025 г. Справочные страницы Linux 6.16