putenv - добавляет или изменяет переменную окружения
НАЗВАНИЕputenv - добавляет или изменяет переменную окружения
СИНТАКСИС
#include
int putenv(char *string);
ОПИСАНИЕ
Функция putenv() изменяет значение переменной окружения
или добавляет к ней новое. Аргумент string должен быть
представлен в форме name=value. Если name не присутствует
в списке переменных окружения, то string добавляется к
окружению. Если name уже существует, то величина
переменной name изменяется на value. Строка, на которую
указывает string, становится частью окружения, так что ее
изменение приведет к изменению окружения.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция putenv() возвращает 0, если завершила работу
корректно, или -1 при ошибках.
КОДЫ ОШИБОК
ENOMEM - недостаточно пространства для расширения
окружения.
ЗАМЕЧАНИЯ
Функция putenv() требует повторного ее использования в
libc4, libc5 и glibc2.0, но оно не требуется в glibc2.1.
Описание для libc4, libc5, glibc: если аргумент string
имеет форму name и не содержит символ `=', то переменная
name изымается из окружения. Если putenv() выделяет новый
массив environ и предыдущий массив также был выделен в
putenv(), то данный массив будет освобожден. В любом
случае, прежнее пространство, ассоциированное с
переменными окружения, не будет освобождено.
Версии для libc4, libc5 и glibc 2.1.2 соответствуют SUSv2:
используется указатель string, передаваемый putenv().
Строка, например, становится частью окружения; последующее
ее изменение приводит к изменению окружения. Таким
образом, ошибочным будет вызывать putenv() с
автоматической переменной в качестве аргумента, т.к.
после возврата из вызываемой функции строка string
по-прежнему останется частью окружения. Однако, версии
glibc 2.0-2.1.1 работают по-другому: используется копия
строки. С одной стороны, это вызывает утечку памяти, с
другой стороны, это не соответствует SUSv2. Эта ошибка
исправлена в glibc2.1.2.
Версия BSD4.4, как и glibc 2.0, использует копию строки.
SUSv2 удаляет `const' из прототипа (что также реализовано
в glibc 2.1.3).
СООТВЕТСТВИЕ СТАНДАРТАМ
SVID 3, POSIX, BSD 4.3