setenv - изменяет или добавляет переменную окружения
setenv(3)
изменяет или добавляет переменную окружения
ОБЗОР
#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():
_BSD_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
ОПИСАНИЕ
Функция
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.