setenv每个进程?

时间:2012-02-01 22:54:54

标签: c++ setenv

我使用setenv动态分配文件名如下:

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

我很好奇这是否是每个过程?

如果我有多个进程运行此代码但使用不同的文件名,是否会发生任何冲突?

让我说我有进程1

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

和过程2

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

这样做会有什么问题吗?

感谢。

3 个答案:

答案 0 :(得分:2)

您使用setenv()设置的环境是每个进程。从本质上讲,它只是您流程中的一个内存区域。至少,这是UNIX系统上的功能。与getenv()不同,它不是C或C ++标准的一部分,但它是POSIX的一部分。它在非POSIX系统上的作用(如果存在)可能会有所不同。

答案 1 :(得分:0)

环境变量是特定于平台的。我不认为setenv()适用于Windows,所以假设你在谈论在Linux上运行的程序,你应该没问题。 setenv()使用进程范围设置环境变量(当然,在分叉线程中共享)。

答案 2 :(得分:0)

据我所知,在所有现代操作系统中,每个进程都有一个单独的环境块,通常在创建进程时构建。 (例如,在Windows系统上的NtCreateProcess()期间)或Linux / Unix / Other的等效项。 _putenv()将在Windows上运行setenv()将在Linux / Unix上运行。