2011-04-06 5 views
2

신참 질문 :표시 이름 C의 모든 환경 변수 = 값 ++

내가 표준 출력으로 내 프로세스의 모든 환경 변수의 이름과 값을 인쇄 할

. 다음 예제는 모든 환경 변수의 값을 인쇄하지만 이름은 인쇄하지 않습니다. 이름을 어떻게 추가로 인쇄 할 수 있습니까?

int main(int argc, char **argv, char** envp) { 
    char** env; 
    for (env = envp; *env != 0; env++) { 
    cout << *env << "\n"; 
    } 
} 
+1

이것은 OS 및 가능하면 컴파일러에 따라 다릅니다. –

+2

이름이 인쇄되지 않습니까? 보통 (모든 컴파일러/os 조합에 대해 사용) 형식의 것입니다 = forsvarir

+0

동의합니다. 예를 들어 우분투에서 g ++로 프로그램을 컴파일하고'LANG = en_US.UTF-8'과 같은 내용을 출력합니다. – QuantumMechanic

답변

2

경우에 따라 닫히지 않고 사람들이 여기에 다다를 수 있습니다. 당신은 다음 문자열을 분할해야

TMPDIR=/home/Cat5sW 
PATH=/usr/local/bin:/usr/bin:/bin 
PWD=/home/Cat5sW 
LANG=en_US.UTF-8 
SHLVL=0 
HOME=/home/Cat5sW 

: (ideone.com에서 촬영)

<EnvironmentVariableName>=<EnvironmentValue> 

같은 : 일반적으로, 각 값은 * envp는이 형식의 문자열이 될 것이다 가리키는 '='문자를 기반으로합니다.

John이 위에서 지적한 것처럼, 일부 OS/컴파일러 조합에 따라 다를 수 있습니다 (필자와는 다른 경우도 있음).

+1

피곤하면 일부 요소가 사라질 수도 있고 존재하지 않을 수도 있습니다 (나는 우리 모두가 거기에 있었을 것입니다) – forsvarir