본문 바로가기
Programming/Tips(C++,C#)

Programming TIP인가? putenv와 setenv함수

by 곰네Zip 2012. 7. 30.

얼마전 HP-UX에 새로이 소스를 컴파일 하여야 할 상황이 생겨서 컴파일을 진행하였다.

QT도 빌드를 잘 하고... 

(다만 최근에 안 것이지만 QT빌드 후 제대로 사용하려면 QMAKESPEC을 환경변수에 넣어주어야 했었네;;; 자기 OS환경에 맞는 옵션을 찾으려면 mkspecs를 찾아보면 나옴..)


근데.. 소스에서 다음과 같은 에러가 났다. ::setenv를 못찾는다고 한것.. ㅡ,.ㅡ;

::setenv("저장할환경변수명","값",overwirte여부); 인데..

이것저것 검색해보다보니.. HP-UX에는 저 ::setenv가 없다고.. (저 함수의 scope는 stdlib인데.. 저거가 포함되어있어도 안된다 하더라... 정확한것은 모르겠지만.. 찾은 site는 아래주소..)

http://www.greenend.org.uk/rjk/tech/putenv.html

요기에 가니 HP-UX의 경우 ::setenv와 ::unsetenv가 없다고..;;

그래서 putenv를 쓰라고 한단다. 근데 putenv는 파라미터가 달랑 하나..; 여기에 full로 작성을 해준다.

가령 TESTEVAL에 1이라는 값을 넣으려면..


 ::setenv("TESTEVAL","1",1); //마지막 1은 overwrite유무. 개인취향에 따라 선택

 ::putenv("TESTEVAL=1"); 


이렇게 호출해 주면 된다. 저거 찾는다고 시간이 제법 걸려주셨더니 참.. 어렵다.. ㅡ,.ㅡ;;

putenv 호출을 잘못해 줘서.. 프로그램이 HP-UX상에서 구동이 안되는 미스테리한 일이 일어났는데... 쩝.. 신기한것은.. 프로그램이 실행되다가 죽고, 자기 스스로 다시 살아나다가 죽고를 반복.. ㅡ,.ㅡ;;

Qt를 이용하여 하는데 Qt쪽에서 무언가 찾아찾아 하면서 그걸 죽인듯.. 여튼 한동안 한참 삽질했네..


반응형

댓글