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

ИМЯ

clearenv - очищает окружение

ОБЗОР

#include <stdlib.h>
int clearenv(void);

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

clearenv(): /* начиная с glibc 2.19: */ _DEFAULT_SOURCE || /* версии glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

ОПИСАНИЕ

Функция clearenv() очищает окружение от всех пар имя-значение и устанавливает значение внешней переменной environ равным NULL. После этого вызова новые переменные можно добавлять в окружение с помощью putenv(3) и setenv(3).

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

Функция clearenv() возвращает ноль при успешном выполнении и ненулевое значение при ошибках.

ВЕРСИИ

Доступна в glibc с версии 2.0.

АТРИБУТЫ

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

Интерфейс Атрибут Значение
clearenv() Безвредность в нитях MT-Unsafe const:env

СООТВЕТСТВИЕ СТАНДАРТАМ

Есть в различных версиях UNIX (DG/UX, HP-UX, QNX, …) В POSIX.9 (привязки для FORTRAN77). В POSIX.1-1996 функции clearenv() и putenv() не приняты, но указано, что они войдут в следующие версии стандарта (смотрите §B.4.6.1). Однако, в POSIX.1-2001 добавлена только putenv(), а clearenv() — отклонена.

ЗАМЕЧАНИЯ

В системах, где clearenv() отсутствует, присваивайте

environ = NULL;

самостоятельно.

Функция clearenv() может пригодиться в приложениях, которые для безопасности полностью контролирую окружение, передаваемое программам, запускающимся посредством exec(3). Для этого приложение сначала очищает окружение, а затем добавляет выборочные переменные окружения.

Заметим, что главным свойством clearenv() является присвоение значения указателю environ(7); эта функция не стирает содержимое буферов, содержащих само окружение.

В справочных страницах DG/UX и Tru64 написано: если environ изменялась не с помощью функций putenv(3), getenv(3) или clearenv(), то clearenv() возвратит ошибку и окружение процесса не будет изменено.

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

getenv(3), putenv(3), setenv(3), unsetenv(3), environ(7)

2017-09-15 Linux