Удалите переменную окружения программно

Я должен записать модульный тест на некоторый код C++, который проверяет на присутствие переменной окружения. Я использую 2008 MSVS и gtest как моя платформа. Я добавляю переменную окружения с помощью putenv, я проверяю переменную окружения с помощью getevn, но я не могу выяснить, как удалить ее так, чтобы никакой другой тест не видел его. Я понимаю, что это, вероятно, легко, но я не могу найти ответ в Интернете.Спасибо

6
задан Péter Török 8 July 2010 в 15:32
поделиться

4 ответа

Повторный вызов putenv с указанием "SOME_VAR =" в качестве параметра приведет к удалению переменной среды SOME_VAR . Кстати, Microsoft рекомендует использовать _putenv , поскольку putenv устарел.

11
ответ дан 8 December 2019 в 15:58
поделиться

Вы всегда можете выполнить fork / выполнить подпроцесс, чтобы выполнить только тестирование putenv / getenv , а затем, когда оно завершится, не будет никаких случайных ошибок. окружающая среда оставлена ​​вокруг.

2
ответ дан 8 December 2019 в 15:58
поделиться

вы можете использовать функцию unsetenv.

Если в vc2008 отсутствует эта функция, вы можете получить прямой доступ к окружению, используя getenv_s, и удалить запись вручную, имитируя unsetenv.

0
ответ дан 8 December 2019 в 15:58
поделиться

Как насчет установки env var в пустую строку?

Из cmd.exe это работает:

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

Где последний показывает, что он был удален.

2
ответ дан 8 December 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: