建立、修改或移除環境變數。 這些函式已有更安全的版本可用,請參閱 _putenv_s、_wputenv_s。
重要
這個 API 不能用於在 Windows 執行階段中執行的應用程式。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 Windows 平台應用程式中不支援的 CRT 函式)。
語法
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
參數
envstring
環境字串定義。
傳回值
如果成功,函式會傳回 0,如果發生錯誤則傳回 -1。
備註
_putenv 函式會加入新的環境變數,或修改現有環境變數的值。 環境變數會定義處理序所執行的環境 (例如,要與程式連結之程式庫的預設搜尋路徑)。 _wputenv 是寬字元版本的 _putenv; envstring 的 _wputenv 引數是寬字元字串。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
一般文字常式對應
Tchar.h 常式 |
_UNICODE and _MBCS 未定義 |
_MBCS 已定義 |
_UNICODE 已定義 |
|---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
envstring 引數必須是 varname=value_string 格式的字串指標,其中 varname 是要新增或修改之環境變數的名稱,而 value_string 是變數的值。 如果 varname 已是環境的一部分,則其值會取代為 value_string;否則會新增 varname 變數及其 value_string 值至環境。 您可以藉由只指定 varname=,藉由指定空白 value_string,或換句話說,從環境中移除變數。
_putenv 且 _wputenv 只會影響目前進程本機的環境;您無法使用它們來修改命令層級環境。 也就是說,這些函式只會在運行時間連結庫可存取的數據結構上運作。 它們不會在操作系統為進程建立的環境區段上運作。 目前處理序終止時,環境會還原為呼叫處理序層級 (在大部分情況下是作業系統層級)。 不過,修改過的環境可以傳遞至 _spawn、_exec 或 system 所建立的任何新處理序,而這些新的處理序會取得 _putenv 和 _wputenv 所新增的任何項目。
請勿直接變更環境專案:請改用 _putenv 或 _wputenv 加以變更。 特別的是,直接釋出 _environ[] 全域陣列的元素可能會造成需要處理的無效記憶體。
_getenv 和 _putenv 使用全域變數 _environ 來存取環境資料表;_wgetenv 和 _wputenv 使用 _wenviron。 _putenv和 _wputenv 可能會變更 和_wenviron的值_environ,因此使 自變數失效,_wenvp並將 自變數main失效_envp。wmain 因此,使用 _environ 或 _wenviron 存取環境資訊更安全。 如需 和與全域變數關聯_putenv的詳細資訊,請參閱 _environ、 。_wputenv_wenviron
注意
_putenv 和 _getenv 系列的函式不是安全執行緒。 _putenv 正在修改字串時,_getenv 可能會傳回字串指標,因而導致隨機失敗。 確定這些函式的呼叫已同步。
需求
| 常式 | 必要的標頭 |
|---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> 或 <wchar.h> |
如需相容性詳細資訊,請參閱相容性。
範例
如需如何使用 _putenv的範例,請參閱getenv_wgetenv 。