我使用setenv动态分配文件名如下:
setenv("file.name",filename.c_str,1);
我很好奇这是否是每个过程?
如果我有多个进程运行此代码但使用不同的文件名,是否会发生任何冲突?
让我说我有进程1
setenv("file.name",filename1.c_str,1);
和过程2
setenv("file.name",filename1.c_str,1);
这样做会有什么问题吗?
感谢。
答案 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上运行。