Как получить список всех переменных среды на C и/или С++?
Я знаю, что getenv
можно использовать для чтения переменной среды, но как мне их перечислить?
Как получить список всех переменных среды на C и/или С++?
Я знаю, что getenv
можно использовать для чтения переменной среды, но как мне их перечислить?
Переменные окружения становятся доступными main()
как аргумент envp
- массив строк с нулевым завершением:
int main(int argc, char **argv, char **envp)
{
for (char **env = envp; *env != 0; env++)
{
char *thisEnv = *env;
printf("%s\n", thisEnv);
}
return 0;
}
#include<stdio.h>
extern char **environ;
int main() {
int i = 1;
char *s = *environ;
for (; s; i++) {
printf("%s\n", s);
s = *(environ+i);
}
return 0;
}
Я думаю, вы должны проверить environ
. Используйте "man environ".
Ваш компилятор может предоставить нестандартные расширения основной функции, которая предоставляет дополнительную информацию о переменных среды. MS-компилятор и большинство разновидностей Unix имеют эту версию main:
int main (int argc, char **argv, char **envp)
где третий параметр - информация об изменении среды - используйте отладчик, чтобы увидеть, что представляет собой формат - возможно, список нумерованных указателей с нулевым завершением.
int main(int argc, char **argv, char** env) {
while (*env)
printf("%s\n", *env++);
return 0;
}
int main(int argc, char* argv[], char* envp[]) {
// loop through envp to get all environments as "NAME=val" until you hit NULL.
}
В большинстве сред вы можете объявить свой основной как:
main(int argc,char* argv[], char** envp)
envp содержит все строки окружения.
LPTCH WINAPI GetEnvironmentStrings (void);
http://msdn.microsoft.com/en-us/library/ms683187%28VS.85%29.aspx
EDIT: работает только с окнами.
Если вы работаете в операционной системе Windows, вы также можете вызвать GetEnvironmentStrings()
, который возвращает блок строк с нулевым завершением.