où est la définition de la extern char **environ?
nous pouvons obtenir la variable d'environnement dans C comme ceci:
extern char **environ;
int main(int argc, char *argv[])
{
int count = 0;
printf("\n");
while(environ[count] != NULL)
{
printf("[%s] :: ", environ[count]);
count++;
}
return 0;
}
mais où est le defination de l'environnement? Je ne trouve pas que dans unistd.h. et comment ça fonctionne?
OriginalL'auteur nzomkxia | 2012-05-18
Vous devez vous connecter pour publier un commentaire.
environ
est définie comme une variable globale dans la Glibc fichier sourceposix/environ.c
.OriginalL'auteur Fred Foo
Avez-vous essayé de déclarer envp comme paramètre principal?
http://www.gnu.org/software/libc/manual/html_node/Program-Arguments.html#Program-Arguments
OriginalL'auteur Maria Zverina
homme:
dans le src de la glibc je pense
pourquoi les différentes sources de fichiers d'en-tête, il ne convient pas à définir la variable dans le unistd.h? pouvez-vous préciser?
Normalement, vous n'avez pas définir variables (
char **environ = NULL;
) dans les fichiers d'en-tête, parce que les fichiers d'en-tête sont inclus dans plusieurs unités de traduction -- les multiples définitions de choc. Vous pouvez déclarer variables (extern char **environ;
) dans l'en-tête des fichiers depuis de multiples déclarations sont d'accord.OriginalL'auteur triclosan