Manpages - clearenv.3

Table of Contents

NAME

clearenv - clear the environment

SYNOPSIS

  #include <stdlib.h>

  int clearenv(void);

Feature Test Macro Requirements for glibc (see *feature_test_macros*(7)):

*clearenv*():

      /* Glibc since 2.19: */ _DEFAULT_SOURCE
          || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

DESCRIPTION

The *clearenv*() function clears the environment of all name-value pairs and sets the value of the external variable environ to NULL. After this call, new variables can be added to the environment using *putenv*(3) and *setenv*(3).

RETURN VALUE

The *clearenv*() function returns zero on success, and a nonzero value on failure.

VERSIONS

Available since glibc 2.0.

ATTRIBUTES

For an explanation of the terms used in this section, see *attributes*(7).

Interface Attribute Value
*clearenv*() Thread safety MT-Unsafe const:env

CONFORMING TO

Various UNIX variants (DG/UX, HP-UX, QNX, …). POSIX.9 (bindings for FORTRAN77). POSIX.1-1996 did not accept *clearenv*() and *putenv*(3), but changed its mind and scheduled these functions for some later issue of this standard (see §B.4.6.1). However, POSIX.1-2001 adds only *putenv*(3), and rejected *clearenv*().

NOTES

On systems where *clearenv*() is unavailable, the assignment

  environ = NULL;

will probably do.

The *clearenv*() function may be useful in security-conscious applications that want to precisely control the environment that is passed to programs executed using *exec*(3). The application would do this by first clearing the environment and then adding select environment variables.

Note that the main effect of *clearenv*() is to adjust the value of the pointer *environ*(7); this function does not erase the contents of the buffers containing the environment definitions.

The DG/UX and Tru64 man pages write: If environ has been modified by anything other than the *putenv*(3), *getenv*(3), or *clearenv*() functions, then *clearenv*() will return an error and the process environment will remain unchanged.

SEE ALSO

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

COLOPHON

This page is part of release 5.13 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.

Author: dt

Created: 2022-02-20 Sun 14:35