Message6629
Logged In: YES
user_id=14198
I think the SDK description Tim posted was clear that
setenv does not modify the process environment. To prove
this, I wrote the test code at the end (and output past it).
It shows that using "::SetEnvironmentVariable()" will not
have the value reflected in the CRTL (ie, getenv() will not
see the new value)
However, using putenv() *does* reflect the value back to
the Win32 API - so GetEnvironmentVariable *does* see the
value set by putenv.
So I think Python is using the correct API, and can't fix
the behaviour.
int main()
{
static char buffer[128];
char * val = getenv("FOO");
printf("When starting, FOO=%s\n", val);
SetEnvironmentVariable("FOO", "SetEnvironmentVariable");
GetEnvironmentVariable("FOO", buffer, sizeof
(buffer)/sizeof(buffer[0]));
val = buffer;
printf("After set, GetEnvironmentVariable reports FOO=%
s\n", val);
val = getenv("FOO");
printf("After set, getenv reports FOO=%s\n", val);
putenv("FOO=_putenv");
GetEnvironmentVariable("FOO", buffer, sizeof
(buffer)/sizeof(buffer[0]));
val = buffer;
printf("After _putenv set, GetEnvironmentVariable
reports FOO=%s\n", val);
val = getenv("FOO");
printf("After _putenv set, getenv reports FOO=%s\n",
val);
return 0;
}
Output:
When starting, FOO=(null)
After set, GetEnvironmentVariable reports
FOO=SetEnvironmentVariable
After set, getenv reports FOO=(null)
After _putenv set, GetEnvironmentVariable reports
FOO=_putenv
After _putenv set, getenv reports FOO=_putenv |
|
Date |
User |
Action |
Args |
2007-08-23 13:56:29 | admin | link | issue463506 messages |
2007-08-23 13:56:29 | admin | create | |
|