0

我正在使用 setenv 动态分配文件名,如下所示:

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

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

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

可以说我有过程1

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

和过程2

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

我这样做会有什么问题吗?

谢谢。

4

3 回答 3

3

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

于 2012-02-01T23:13:02.427 回答
0

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

于 2012-02-01T23:12:48.607 回答
0

环境变量是特定于平台的。我认为 setenv() 不适用于 Windows,因此假设您正在谈论在 Linux 上运行的程序,您应该没问题。setenv() 设置具有进程范围的环境变量(当然在分叉线程之间共享)。

于 2012-02-01T23:10:54.603 回答