IT TIP

모든 환경 변수를 C / C ++로 인쇄

itqueen 2020. 11. 25. 21:47
반응형

모든 환경 변수를 C / C ++로 인쇄


C 및 / 또는 C ++의 모든 환경 변수 목록을 얻으려면 어떻게해야합니까?

getenv환경 변수를 읽는 데 사용할 수 있다는 것을 알고 있지만 어떻게 모두 나열합니까?


환경 변수를 사용할 수있게된다 main()는 AS 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)

세 번째 매개 변수는 환경 변수 정보입니다. 디버거를 사용하여 형식이 무엇인지 확인합니다. 아마도 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.
}

대부분의 환경에서 메인을 다음과 같이 선언 할 수 있습니다.

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

envp는 모든 환경 문자열을 포함합니다.


LPTCH WINAPI GetEnvironmentStrings(void);

http://msdn.microsoft.com/en-us/library/ms683187%28VS.85%29.aspx

편집 : Windows에서만 작동합니다.


Windows 운영 체제에서 실행중인 경우 GetEnvironmentStrings()null로 끝나는 문자열 블록을 반환하는 호출 할 수도 있습니다.

참고 URL : https://stackoverflow.com/questions/2085302/printing-all-environment-variables-in-cc

반응형