2012-02-01 55 views
0

餘米assing動態使用SETENV作爲folows文件名:setenv每個進程?

setenv("file.name",filename.c_str,1); 

我很好奇,如果這是每個進程?

如果我有多個進程運行此代碼,但採取不同的文件名,是否會有任何衝突?

可以說我有1

setenv("file.name",filename1.c_str,1); 

和處理2

setenv("file.name",filename1.c_str,1); 

會我有這樣做的任何問題的過程?

謝謝。

回答

2

您用setenv()設置的環境是每個過程。本質上它只是你的過程中的一個存儲區域。至少,這在UNIX系統上是這樣的。與getenv()不同,它不是C或C++標準的一部分,但它是POSIX的一部分。它在非POSIX系統上如果存在,可能會有所不同。

+0

謝謝。很高興看到最後一個問題沒有任何困難。 – DarthVader 2012-02-01 23:23:10

+0

我對此事件感到抱歉 - 我給出的回覆不適合這種情況。 – 2012-02-01 23:58:41

0

環境變量是平臺特定的。我不認爲setenv()適用於Windows,所以假設你正在討論在Linux上運行的程序,你應該沒問題。 setenv()設置了具有進程範圍的環境變量(當然在分支線程之間共享)。

0

據我所知,在所有現代操作系統上,每個進程都有一個獨立的環境塊,通常在創建進程時創建。 (例如,在Windows系統上的NtCreateProcess()期間)或Linux/Unix/Other的等價物。 _putenv()將在Windows上工作setenv()將在Linux/Unix上運行。

+0

我可以看到'setenv()'是POSIX的一部分,但我沒有在C或C++中看到它。 – 2012-02-01 23:14:36