每个进程设置环境变量?

发布于 2025-01-01 17:08:14 字数 358 浏览 1 评论 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);  

这样做会有什么问题吗?

谢谢。

I m assing file name dynamically using setenv as folows:

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

I m curious if this is per process?

If i have multiple processes running this code but taking different file names, would there be any collisions?

Lets say I have process 1

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

and process 2

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

would i have any problems doing this?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

倾城月光淡如水﹏ 2025-01-08 17:08:14

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

The environment you set with setenv() is per process. Essentially it is just a memory area in your process. At least, this is what does on UNIX systems. Unlike getenv() it isn't part of either the C or the C++ standard but it is part of POSIX. What it does on non-POSIX systems, if it exists, may be something different.

无人问我粥可暖 2025-01-08 17:08:14

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

Environment variables are platform specific. I don't think setenv() works with Windows, so assuming you are talking about a program running on Linux, you should be fine. setenv() sets environment variables with process scope (and of course shared amongst forked threads).

甲如呢乙后呢 2025-01-08 17:08:14

据我所知,在所有现代操作系统上,每个进程都有一个单独的环境块,通常在创建进程时构建。 (例如,在 Windows 系统上的 NtCreateProcess() 期间)或 Linux/Unix/其他系统的等效过程。 _putenv() 适用于 Windows,而 setenv() 适用于 Linux/Unix。

To my knowledge, on all modern operating systems, each process has a seperate environment block which is usually constructed when the process is created. (e.g. during NtCreateProcess() on a Windows system) or the equivalent for Linux/Unix/Other. _putenv() will work on Windows wheras setenv() will work on Linux/Unix.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文