_putenv _wputenv
建立、修改,或移除環境變數。 更多這些函式的可用安全版本,請參閱 _putenv_s _wputenv_s 。
重要
這個 API 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
參數
- envstring
環境字串定義。
傳回值
傳回 0,如果成功或– 1 錯誤情況下。
備註
_putenv 函式會將新的環境變數或修改現有的環境變數的值。 環境變數定義處理序執行的環境 (例如,使用程式可以將連結程式庫的預設搜尋路徑)。 _wputenv 是 _putenv 的寬字元版本。傳遞給 _wputenv 的參數 envstring 的寬字元字串。
泛用文字常式對應
Tchar.h 常式 |
未定義的 _UNICODE 和 _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
envstring 引數必須是指標到表單 varname=string的字串, varname 會將環境變數名稱或修改和 string 是變數值。 如果 varname 已經是環境的一部分,它的值是由 string取代;否則,新 varname 變數和其 string 值加入至環境。 換句話說,您可以從環境移除變數藉由指定 null string —您可以僅指定 varname=。
_putenv 和 _wputenv 會影響是在目前處理序的環境;您不能使用這些修改命令層級環境。 也就是這些函式只能使用在資料結構可供這個執行階段程式庫而不是為建立處理序的環境區塊中的作業系統。 當目前的處理序結束時,將環境還原至呼叫程序 (在大多數情況下,作業系統層級) 的層級。 不過,修改過的環境可以傳遞至任何建立的新處理序 _spawn、 _exec或 system,因此,這些處理序取得任何新項目將由 _putenv 和 _wputenv。
請勿直接變更環境項目:相反地,請使用 _putenv 或 _wputenv 變更它。 特別是, _environ[] 全域陣列的直接釋放項目可能會導致定址的無效的記憶體。
getenv 和 _putenv 使用這個全域變數 _environ 存取環境表; _wgetenv 和 _wputenv 使用 _wenviron。 _putenv 和 _wputenv 可能變更 _environ 和 _wenviron的值,因此無法使用 _envp 引數為 main 、和wenvp 引數為 wmain。 因此,使用 _environ 或 _wenviron 存取環境資訊比較安全。 如需 _putenv 和 _wputenv 的關聯性的詳細資訊與全域變數,請參閱 _environ, _wenviron。
注意事項 |
---|
_putenv 和 _getenv 函式家族不是安全執行緒。_getenv 可以傳回字串指標,當 _putenv 修改字串時,會產生隨機失敗。請確定這些函式的呼叫同步。 |
需求
程序 |
必要的標頭檔 |
---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> 或 <wchar.h> |
如需更多關於相容性的資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
如需範例 _putenv使用方式,請參閱 getenv _wgetenv。
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需更多的資訊,請參閱 Platform Invoke Examples 。