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.