I'm using the following code in OSX and in Windows Vista:
#include <stdio.h>
#include <string.h>
extern char **environ;
int
main(int argc, char **argv)
{
int i;
for (i = 0; environ[i] != NULL; i++)
{
printf("var = %s - %d\n", environ[i], (int)strlen(environ[i]));
}
return 0;
}
On OSX compile it with cc
, on Windows - with 'cl' from Windows SDK 7.1 (with Redistributable Packages: Microsoft Visual C++ 2010 in it).
I define the same ENV variables in both OS in Russian language: MY_ENV='russian letters goes here'. And have got a difference about 2 times in a length of a strings.
This length I'm planning to use in malloc
and want them be the same. How can I get the same lengths correctly, in CRT way?
To list all the environment variables, use the command " env " (or " printenv "). You could also use " set " to list all the variables, including all local variables.
Select Start select Control Panel. double click System and select the Advanced tab. Click Environment Variables. In the section System Variables find the PATH environment variable and select it.
Environment variables are stored together with command line arguments at the top of the process memory layout, above the stack.
getenv
is available on GNU/Linux, Mac OS X, and Microsoft Windows.setenv
is available of GNU/Linux and Mac OS X but not on Microsoft Windows.putenv
, like getenv
, is available on GNU/Linux, Mac OS X, and Microsoft Windows.Thus getenv
and putenv
are your best cross-platform options.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With