nix::env

Function clearenv

Source
pub unsafe fn clearenv() -> Result<(), ClearEnvError>
Expand description

Clear the environment of all name-value pairs.

On platforms where libc provides clearenv(), it will be used. libc’s clearenv() is documented to return an error code but not set errno; if the return value indicates a failure, this function will return ClearEnvError.

On platforms where libc does not provide clearenv(), a fallback implementation will be used that iterates over all environment variables and removes them one-by-one.

§Safety

This function is not threadsafe and can cause undefined behavior in combination with std::env or other program components that access the environment. See, for example, the discussion on std::env::remove_var; this function is a case of an “inherently unsafe non-threadsafe API” dealing with the environment.

The caller must ensure no other threads access the process environment while this function executes and that no raw pointers to an element of libc’s environ is currently held. The latter is not an issue if the only other environment access in the program is via std::env, but the requirement on thread safety must still be upheld.