_putenv
, _wputenv
建立、修改或移除環境變數。 這些函式已有更安全的版本可用,請參閱 _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
。