4

환경 변수가 있는지 확인하는 일부 C++ 코드에 대한 단위 테스트를 작성해야합니다. MSVS 2008 및 내 프레임 워크로 gtest 사용하고 있습니다. putenv를 사용하여 환경 변수를 추가하고 getevn을 사용하여 환경 변수를 확인하지만 다른 테스트에서 볼 수 없도록 제거하는 방법을 알아낼 수 없습니다. 이것은 아마 쉬운 일임을 알고 있지만 인터넷에서 답을 찾을 수 없습니다. 감사합니다프로그래밍 방식으로 환경 변수 제거

답변

9

을 다시 매개 변수로 지정하면 SOME_VAR이 삭제됩니다. btw, putenv은 (는) 사용되지 않으므로 _putenv을 사용하는 것이 좋습니다.

+0

적어도 Solaris에서는이 기능에 대한 언급이 맨 페이지에 없습니다. –

+0

그는 MSVS 2008을 사용하고 있습니다. 그는 Windows에서 작업 중임을 암시합니다. 리눅스에서는 setenv와 unsetenv를 사용합니다. 솔라리스에 솔라리스가있는 지 모르겠다. – 341008

1

unsetenv 함수를 사용할 수 있습니다.

vc2008에이 기능이없는 경우 getenv_s을 사용하여 환경에 직접 액세스하고 unsetenv을 시뮬레이트하여 항목을 수동으로 제거 할 수 있습니다.

+0

실제로 POSIX 하위 시스템을 사용하지 않고 Windows에서 사용할 수 있습니까? Google은 일치하지 않는 결과를 보이고 있습니다 ... –

2

언제든지 putenv/getenv 테스트를 수행하기 위해 하위 프로세스를 fork/exec 할 수 있으며 종료 될 때 주위에 남겨진 다른 환경이 없습니다.

+1

나는 그것을 생각했지만 더 깨끗한 해결책을 찾고있었습니다. – Steve

1

env var을 빈 문자열로 설정하는 방법은 어떻습니까?

은 cmd.exe를에서이 작품 : 마지막 하나가 삭제 된 표시

set SOMEVAR=something 
echo %SOMEVAR% 
set SOMEVAR= 
echo %SOMEVAR% 

합니다.