Добавить или изменить переменную окружения
#include <stdlib.h>int putenv( char *env_name );
libc
Функция putenv() использует env_name в форме имя=значение для установки переменной окружения с именем name в значение value. Функция изменяет значение переменной name или создает новую.
В любом случае env_name становится частью окружения; последующие модификации строки env_name влияют на окружение.
Память, доступная для имен переменных окружения и их значений ограничено. Отсюда, putenv() может завершится с ошибкой.
Если env_name не является константой, следует сделать дубль строки, поскольку putenv() не делает ее копию. Пример:
|
Получение ассоциированной с INCLUDE
строки и вывод ее на печать, назначение нового значения переменной окружения и повторение вывода. Удаление переменной INCLUDE
из окружения.
#include <stdio.h>#include <stdlib.h>int main( void ){char *path = getenv( "INCLUDE" );if ( path != NULL ){printf( "INCLUDE=%s\n", path );}if ( putenv( "INCLUDE=/src/include" ) != 0 ){printf( "putenv() failed setting INCLUDE\n" );return (EXIT_FAILURE);}path = getenv( "INCLUDE" );if ( path != NULL ){printf( "INCLUDE=%s\n", path );}unsetenv( "INCLUDE" );return (EXIT_SUCCESS);}
Код генерирует следующий вывод:
$ ./a.out INCLUDE=/usr/nto/include INCLUDE=/src/include
POSIX 1003.1 X/Open Systems Interfaces Extension
Никогда не используйте putenv() с автоматическими переменными.
Функция putenv() изменяет память, ассоциированную с окружением процесса, на которое указывает глобальная переменная environ.
clearenv(), environ, errno, getenv(), setenv(), unsetenv()
Предыдущий раздел: Описание API системной библиотеки