我使用setenv动态访问文件名,如下所示:
setenv("file.name",filename.c_str,1);我很好奇这是不是按进程进行的?
如果我有多个进程运行这段代码,但是使用不同的文件名,会有冲突吗?
假设我有进程1
setenv("file.name",filename1.c_str,1); 和进程2
setenv("file.name",filename1.c_str,1); 这样做会有什么问题吗?
谢谢。
发布于 2012-02-02 07:13:02
您使用setenv()设置的环境是按进程设置的。本质上,它只是进程中的一个内存区。至少,这是在UNIX系统上执行的操作。与getenv()不同,它既不是C标准的一部分,也不是C++标准的一部分,但它是POSIX的一部分。它在非POSIX系统上所做的事情,如果存在的话,可能会有所不同。
发布于 2012-02-02 07:10:55
环境变量是特定于平台的。我认为setenv()不适用于Windows,所以假设您谈论的是一个运行在Linux上的程序,那么您应该没问题。setenv()设置具有进程作用域的环境变量(当然,在派生的线程之间共享)。
发布于 2012-02-02 07:12:49
据我所知,在所有现代操作系统上,每个进程都有一个独立的环境块,它通常是在创建进程时构造的。(例如,在Windows系统上的NtCreateProcess()期间)或用于Linux/Unix/Other的等价物。_putenv()可以在Windows上运行,而setenv()可以在Linux/Unix上运行。
https://stackoverflow.com/questions/9104610
复制相似问题