89 votes

Impression de toutes les variables d'environnement en C / C ++

Comment 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 répertorier tous?

133voto

Alex Brown Points 15776

env est disponible comme argument de main, comme envp - un tableau de chaînes terminé par null:

 int main(int argc, char **argv, char** envp)
{
  char** env;
  for (env = envp; *env != 0; env++)
  {
    char* thisEnv = *env;
    printf("%s\n", thisEnv);    
  }
  return(0);
}
 

76voto

user1602017 Points 141
#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;
}

17voto

Dyno Hongjun Fu Points 2397

je pense que vous devriez vérifier environ, "man environ"

10voto

Skizz Points 30682

Votre compilateur peut fournir des extensions non standard à la fonction principale qui fournissent des informations supplémentaires sur les variables d'environnement. Le compilateur MS et la plupart des versions d'Unix ont cette version de main:

 int main (int argc, char **argv, char **envp)
 

où le troisième paramètre est l'information sur la variable d'environnement - utilisez un débogueur pour voir quel est le format - probablement une liste de pointeurs de chaîne terminée par null.

4voto

KennyTM Points 232647
int main(int argc, char* argv[], char* envp[]) {
   // loop through envp to get all environments as "NAME=val" until you hit NULL.
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X