C에서 환경 변수를 가져오고 설정하는 방법

이 기사에서는 C 언어 프로그래밍에서 환경 변수에 액세스하는 가장 간단한 방법에 대해 설명합니다.

접근법 1



이 방법에서는 단순히 environ 변수를 extern 키워드를 사용하여 확장하여 사용했습니다.

암호

#include <stdio.h>

// https://man7.org/linux/man-pages/man7/environ.7.html
extern char **environ;

int main(int argc, char **argv) {
    // list out all the environment variables
    for (int i=0; environ[i]!=NULL; i++) {
        printf("%d: %s\n", i, envp[i]);
    }

    return 0;
}


자세한 내용은 environ man page을 확인하십시오.

접근법 2



대부분의 학생들은 main 함수가 환경 변수 배열에 불과한 세 번째 인수를 받을 수도 있다는 사실을 모릅니다.

NOTE: The third argument may not support all compilers. But it should work on the latest compiler versions.



암호

#include <stdio.h>

int main(int argc, char **argv, char **envp) {
    // list out all the environment variables
    for (int i=0; envp[i]!=NULL; i++) {
        printf("%d: %s\n", i, envp[i]);
    }

    return 0;
}


접근법 3



이 방법에서는 정의된 getenvsetenv 함수를 사용합니다.
getenv는 환경 변수 이름인 하나의 인수를 사용하고 null로 끝나는 char 포인터를 반환합니다. 전달된 이름이 없으면 NULL 를 반환합니다.
setenv는 세 가지 인수를 사용합니다. 첫 번째는 환경 변수 이름이고 두 번째는 해당 값이고 세 번째는 0이 아닌 경우 이미 존재하는 환경 변수를 같은 이름으로 덮어쓰는 int 플래그입니다.

NOTE: setenv doesn't set the environment variable permanently but for the current process and its child process only. It means setenv the environment variables are visible only in the current process and its child ones.



더 많은 작업을 보려면 clearenvman pageputenv와 같은 다른 기능을 확인하십시오.

암호

#include <stdio.h>
#include <stdlib.h> // setenv, getenv

int main(int argc, char **argv) {
    char *user = getenv("USER"),
        *hosttype = getenv("HOSTTYPE"),
        *hostname = getenv("HOSTNAME");
    printf("USER: %s\n", user ? user : "null");
    printf("HOSTTYPE: %s\n", hosttype ? hosttype : "null");
    printf("HOSTNAME: %s\n", hostname ? hostname : "null");

    setenv("USER", "namantam1", 1);
    printf("updated USER: %s\n", getenv("USER"));

    return 0;
}


산출

USER: naman
HOSTTYPE: x86_64
HOSTNAME: null
updated USER: namantam1


신청


  • 환경 변수를 기반으로 로그 상세도를 설정할 수 있습니다.
  • 상위 프로세스에서 환경 변수를 설정하고 하위 프로세스에서 동일하게 액세스할 수 있습니다. 현재 프로세스를 하위 프로세스로 복제하는 방법을 알아보려면 기사를 확인하십시오.



  • ❤️이 글을 읽어주셔서 정말 감사합니다. 저는 새로운 것을 배우는 열정적인 공대생이므로 실수를 발견하거나 제안할 사항이 있으면 댓글로 알려주세요.

    또한 이 게시물이 어떤 식으로든 도움이 된다면 공유하고 엄지손가락을 치켜세우는 것을 고려하십시오.

    좋은 웹페이지 즐겨찾기