...
Unanticipated results may occur if
setenv()
changes the external variableenviron
. In particular, if the optionalenvp
argument tomain()
is present, it is not changed, and thus may point to an obsolete copy of the environment (as may any other copy ofenviron
).
According to the Microsoft Visual Studio 2005/.NET Framework 2.0 help pages:
The
getenv
function searches the list of environment variables forvarname
.getenv
is not case sensitive in the Windows operating system.getenv
and_putenv
use the copy of the environment pointed to by the global variable_environ
to access the environment.getenv
operates only on the data structures accessible to the run-time library and not on the environment "segment" created for the process by the operating system. Therefore, programs that use theenvp
argument tomain
orwmain
may retrieve invalid information.
When compiled with gcc-3.4.6 and run on Andrew Linux-2.6.16.29, the following code:
...