18

次のように C で環境変数を取得できます。

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;
}

しかし、環境の定義はどこにありますか? unistd.h でそれを見つけることができません。そしてそれはどのように機能しますか?

4

4 に答える 4

14

environは、Glibc ソース ファイルでグローバル変数として定義されていますposix/environ.c

于 2012-05-18T09:07:00.670 に答える
4

main のパラメータとして envp を宣言しようとしましたか?

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

http://www.gnu.org/software/libc/manual/html_node/Program-Arguments.html#Program-Arguments

于 2012-05-18T08:35:51.807 に答える
1

男:

この変数はユーザー プログラムで宣言する必要がありますが、ヘッダー ファイルが libc4 または libc5 からのもので、それらが glibc からのもので _GNU_SOURCE が定義されている場合は、ヘッダー ファイル unistd.h で宣言されます。

于 2012-05-18T08:35:50.290 に答える