Impression de toutes les variables d'environnement en C / C++
Comment puis-je obtenir la liste de toutes les variables d'environnement en C et/ou C++?
Je sais que getenv
peut être utilisé pour lire une variable d'environnement, mais comment les lister toutes?
9 réponses
Les variables d'environnement sont mises à la disposition de main()
en tant qu'argument envp
- Un tableau de chaînes terminé par null:
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;
}
Je pense que vous devriez vérifier environ
. L'utilisation de "l'homme environ".
Votre compilateur peut fournir des extensions non standard à la fonction principale qui fournit des informations supplémentaires sur les variables d'environnement. Le compilateur MS et la plupart des saveurs D'Unix ont cette version de main:
int main (int argc, char **argv, char **envp)
Où le troisième paramètre est la variable d'environnement information-utilisez un débogueur pour voir quel est le format-probablement une liste de pointeurs de chaîne terminée par null.
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.
}
Dans la plupart des environnements, vous pouvez déclarer vos principales comme:
main(int argc,char* argv[], char** envp)
Envp contient toutes les chaînes d'environnement.
LPTCH WINAPI GetEnvironmentStrings(void);
Http://msdn.microsoft.com/en-us/library/ms683187%28VS.85%29.aspx
EDIT: ne fonctionne que sous windows.
Si vous utilisez un système D'exploitation Windows, vous pouvez également appeler {[0] } qui renvoie un bloc de chaînes terminées par null.