이솝보드의 rc.local 파일에.. 아래와 같이 환경변수를 하나 만들었구요.
BABO=you
이놈을 프로그램 내부에서 바꾸고자 할때...putenv 함수를 써서.. 아래와 같이 하면
putenv("BABO=me");
이러면 물론 환경변수값이 변경됩니다.
그런데.. 이 putenv 라는 함수는 특성이.. 지역적이라서.. 변경된 환경변수가 계속 남아있는 것이 아니라 프로그램이 종료되면 환경변수값 역시 예전의 값을 유지하네요.
물론 쉘 커맨드 상태에서 아래와 같이
export env BABO=me
이렇게하면 전역적인 환경변수로 세팅이 되는데요..
궁금한 것은 프로그램 내부에서 위와같이 전역적으로 환경변수를 바꿀 수 있는 방법이 있는가 하는점입니다.
아시는 분 힌트좀 주세요 ^^
env라는 녀석은 parent에서 child로만 건네지게 되어 있습니다.
exec 계열의 명령어를 쓰면 부모에서 자식으로 건네질 때 변경해서
건네줄 수는 있으나, 자식이 부모 프로세스의 환경을 손대지는 못하겠지요.
보통 우리가 보는 환경은 shell의 환경변수입니다.
프로세스를 실행시키면 shell이 복제를 해서 주는 형태로 되어 있는데
결국은 parent를 변경시키기 힘들기 때문에 문제가 생길 듯 합니다.
환경변수 말고 파일이나 다른 것을 이용하는게 어떨까 합니다.
^^