C에서 쉘 환경변수를 얻어 오는 방법

mypwd의 이미지

getenv() 함수로 환경변수를 얻어오려고 하는데 잘 되지 않아서 문의드립니다.

#env 와
#set 을 해보면 출력되는 결과가 다릅니다.

getenv()를 쓰면 env로 출력되는 것들은 값을 얻을 수 있는데 반해서
set에서만 보이는 변수들은 값을 얻을 수가 없습니다.

main(int argc, char **argv, char **envp)
로 얻어도 마찬가지입니다.

bash 소스를 보면 getenv("BASH_ENV")로 쉘 변수정보를 읽어 오던데
이것 역시 제 환경에서는 보이지 않았습니다.

어떻게 하면 쉘 환경변수들을 모두 읽어 올수 있을까요?

s527292의 이미지

popen 이란걸 사용해보세요..

system 과 같은 기능인데.. stdout 으로 나가는 결과를 파일로 읽어 올수 있지요..

xfmulder의 이미지

set A=BBB 한것은 현재 쉘에서만 사용되는 로컬변수
export A 하면 환경변수로서 CHILD 에게 전달 될것 같습니다.

프로그램 중간에 system("/bin/sh");
를 실행하셔서 set 값을 확인해 보세요. 아마 없을것 같은데...

내 자식들도 나처럼 !!