gpt4 book ai didi

c - 设置进程中所有进程都可见的环境变量

转载 作者:行者123 更新时间:2023-11-30 18:32:28 28 4
gpt4 key购买 nike

如何从进程中设置一个对所有进程都可见的环境变量?我正在使用 C 和 Glib。

我有 10 个进程使用同一个库。问题是在该库中执行了一个检查过程(非常消耗 CPU)。我想避免为每个进程执行库检查过程。对于第一个使用该库的进程来说就足够了。

最佳答案

这根本不可能。

设置环境变量(或更改当前环境)仅对当前进程的子(和后代)进程可见。

其他进程,特别是父进程(通常是在启动程序的终端中运行的 shell)不受影响。

你可能会玩一些肮脏的把戏,比如将行添加到 $HOME/.bashrc 等中。但你不应该这样做。

您只需记录哪些环境变量是相关的。设置环境变量是用户的责任(可能通过手动编辑他的$HOME/.bashrc等)。将这种自由留给您的用户。向他解释如何做到这一点以及原因。

您编辑了问题来解释这一点

I have 10 processes that use the same library. The problem is that in that library a checking procedure ( which is CPU hungry ) is performed. I want to avoid that library checking procedure to be executed for every process.

但是您绝对不需要为此更改环境变量。

你可以

  1. 决定并记录不执行检查,除非给出某些特定的环境变量(或某些程序参数)

  2. 决定为检查指定一个特定的文件名,并使用文件锁定写入写入该文件,并使用文件锁定读取再次读取该文件

  3. 让检查将其结果写入某个预先已知的文件中,并在决定要进行昂贵的检查之前读取该文件

  4. 让一个进程启动所有其他进程,并通知它们有关检查的信息(也许确实设置了某些环境变量或某些程序参数)或使用某种进程间通信技巧与其他进程进行通信(您可以使用套接字,锁定文件、共享内存等...)

  5. 还有很多其他技巧。

关于c - 设置进程中所有进程都可见的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13181982/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com