setenv

SETENV(3)                Руководство программиста Linux                SETENV(3)



ИМЯ
       setenv - изменяет или добавляет переменную окружения

ОБЗОР
       #include <stdlib.h>

       int setenv(const char *name, const char *value, int overwrite);

       int unsetenv(const char *name);

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

       setenv(), unsetenv():
           _POSIX_C_SOURCE >= 200112L
               || /* версии glibc <= 2.19: */ _BSD_SOURCE

ОПИСАНИЕ
       Функция setenv() добавляет переменную name в окружение со значением
       value, если name ещё не существует. Если name в окружении существует, то
       её значение изменяется на value, если overwrite имеет ненулевое значение;
       если overwrite равно нулю, то значение name не изменяется (и setenv()
       завершается без ошибки). Эта функция делает копию строк, указанных в name
       и value (в отличии от putenv(3)).

       Функция unsetenv() удаляет переменную name из окружения. Если name в
       окружении не существует, то функция завершается без ошибки и окружение не
       изменяется.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
       При успешном выполнении setenv() возвращает ноль, при ошибке возвращается
       -1, а в errno содержится код ошибки.

       При успешном выполнении unsetenv() возвращает ноль, при ошибке
       возвращается -1, а в errno содержится код ошибки.

ОШИБКИ
       EINVAL Значение name равно NULL, указывает на строку нулевой длины или
              содержащую символ '='.

       ENOMEM Недостаточно памяти для добавления новой переменной в окружение.

АТРИБУТЫ
       Описание терминов данного раздела смотрите в attributes(7).

       ┌─────────────────────┬──────────────────────┬─────────────────────┐
       │Интерфейс            Атрибут              Значение            │
       ├─────────────────────┼──────────────────────┼─────────────────────┤
       │setenv(), unsetenv() │ Безвредность в нитях │ MT-Unsafe const:env │
       └─────────────────────┴──────────────────────┴─────────────────────┘
СООТВЕТСТВИЕ СТАНДАРТАМ
       POSIX.1-2001, POSIX.1-2008, 4.3BSD.

ЗАМЕЧАНИЯ
       В POSIX.1 не требуется, чтобы setenv() или unsetenv() были
       реентерабельными.

       До glibc 2.2.2, unsetenv() объявлялась как возвращающая void; более новые
       версии glibc следуют объявлению из POSIX.1, показанному в ОБЗОРЕ.

ДЕФЕКТЫ
       В POSIX.1 указано, что если name содержит символ '=', то setenv() должна
       завершаться с ошибкой EINVAL; однако версии glibc до 2.3.4 допускали знак
       '=' в name.

СМОТРИТЕ ТАКЖЕ
       clearenv(3), getenv(3), putenv(3), environ(7)



GNU                                2016-03-15                          SETENV(3)