2012-10-02 49 views
0

我嘗試在Visual Studio 2008下的cl.exe下使用getenv和setenv。 getenv工作但setenv沒有。經過一番瀏覽後,我發現_putenv是另一種選擇。簡單的_putenv示例不起作用

下面的代碼片段沒有工作

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    _putenv("Hello=123"); 
} 

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>putenv.exe 

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>echo %Hello% 
%Hello% 

可能是什麼原因?

回答

4

_putenv()修改正在運行的進程的環境,而不是父進程,這是您在putenv.exe程序完成後使用echo命令查看的內容。

+0

如何讓它的工作方式類似於setenv在unix環境下的工作方式? –

+0

@ShrutiSingh - envornment是繼承。 'putenv'和'setenv'完成同樣的工作。 –

+0

@ShrutiSingh,它的工作原理與setenv幾乎一樣 –

1

嘗試putenv後啓動一個新的外殼。它影響未來。當一個過程結束時,它會回到它來自的過去的環境。