Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C언어로 환경 변수(Environment Variable) 출력하기

개요

이 글에서는 C 언어를 사용하여 시스템의 환경 변수(Environment Variable)를 출력하는 프로그램을 작성하는 방법을 알아봅니다.

환경 변수는 운영체제에서 실행 중인 프로세스의 동작 방식에 영향을 미칠 수 있는 전역 변수입니다. 프로그램은 이 값을 참조하여 시스템 정보, 실행 경로, 사용자 설정 등을 확인할 수 있습니다.

환경 변수란?

환경 변수는 운영체제가 프로세스에 전달하는 키-값(Key=Value) 형태의 문자열 데이터로, 주로 다음과 같은 용도로 활용됩니다.

  • 실행 파일 검색 경로(PATH) 등 시스템 경로 설정
  • 운영체제 종류(OS), 프로세서 정보 등 시스템 정보 제공
  • 사용자 프로필 디렉터리와 같은 환경 설정 정보 전달

환경 변수를 출력하는 C 프로그램

C 언어에서는 main() 함수의 세 번째 매개변수인 envp를 통해 환경 변수 목록에 접근할 수 있습니다. 이 배열은 NULL 포인터로 끝나기 때문에 반복문을 사용해 전체 목록을 손쉽게 순회할 수 있습니다.

예제 코드

#include <stdio.h>

int main(int argc, char *argv[], char *envp[]) {
    int i;
    for (i = 0; envp[i] != NULL; i++)
        printf("\n%s", envp[i]);
    getchar();
    return 0;
}

코드 설명

  • envp: 환경 변수들이 문자열 배열 형태로 저장된 매개변수입니다.
  • for 루프는 배열의 끝을 의미하는 NULL이 나타날 때까지 각 환경 변수를 한 줄씩 출력합니다.
  • getchar()는 콘솔 창이 즉시 닫히는 것을 방지하기 위해 사용자의 입력을 대기합니다.

실행 결과

Windows 환경에서 위 프로그램을 컴파일하여 실행하면 다음과 같은 환경 변수 목록이 출력됩니다.

ALLUSERSPROFILE=C:\ProgramData
CommonProgramFiles=C:\Program Files\Common Files
HOMEDRIVE=C:
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=2a07
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
WATCOM=C:\watcom
windir=C:\Windows

참고: getenv() 함수 활용

전체 목록이 아닌 특정 환경 변수만 필요하다면 <stdlib.h> 헤더에 정의된 getenv() 함수를 사용하는 것이 더 간편합니다.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char *path = getenv("PATH");
    if (path != NULL)
        printf("PATH = %s\n", path);
    return 0;
}

이처럼 envp 매개변수 또는 getenv() 함수를 활용하면 프로그램 내에서 시스템 환경 정보를 자유롭게 확인하고 활용할 수 있습니다.