개요
이 글에서는 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() 함수를 활용하면 프로그램 내에서 시스템 환경 정보를 자유롭게 확인하고 활용할 수 있습니다.