C 从所有进程都可见的进程中设置环境变量
如何从所有进程都可见的进程中设置环境变量? 我在用C和GlibC 从所有进程都可见的进程中设置环境变量,c,unix,environment-variables,glib,C,Unix,Environment Variables,Glib,如何从所有进程都可见的进程中设置环境变量? 我在用C和Glib 我有10个进程使用同一个库。问题是,在该库中执行了一个检查过程(这是CPU不足的)。我希望避免为每个进程执行库检查过程。对于使用库的第一个进程,这就足够了。这根本不可能 设置环境变量(或更改当前环境)仅在当前进程的子进程(和子进程)中可见 其他进程,特别是父进程(通常是在启动程序的终端中运行的shell)不受影响 您可能会玩一些肮脏的把戏,例如在$HOME/.bashrc中添加行,但您不应该这样做 您只需记录哪些环境变量是相关的。用
我有10个进程使用同一个库。问题是,在该库中执行了一个检查过程(这是CPU不足的)。我希望避免为每个进程执行库检查过程。对于使用库的第一个进程,这就足够了。这根本不可能 设置环境变量(或更改当前环境)仅在当前进程的子进程(和子进程)中可见 其他进程,特别是父进程(通常是在启动程序的终端中运行的shell)不受影响 您可能会玩一些肮脏的把戏,例如在
$HOME/.bashrc
中添加行,但您不应该这样做
您只需记录哪些环境变量是相关的。用户负责设置环境变量(可能通过手动编辑其$HOME/.bashrc
等)。将这种自由留给用户。向他解释怎么做以及为什么
你编辑了你的问题来解释这一点
我有10个进程使用同一个库。问题是,在该库中执行了一个检查过程(这是CPU不足的)。我希望避免为每个进程执行库检查过程
但您肯定不需要为此更改环境变量
你可以
那是不可能的。您只能为子进程设置环境。flock()听起来可能是您的朋友 您可能还想查看信号量或SHM(共享内存)
这完全取决于你想要的协调程度。文件锁对于一个进程来说已经足够好了,可以在我工作的时候说“待在外面”。信号量和共享内存将允许您协调访问。为什么要问???你到底想达到什么目的?这里肯定需要澄清一下。是否希望任意进程看到此变量;从该进程派生的子进程;您编写的进程在您的id下运行,但从不同的shell启动;什么样的IPC?我需要减少CPU使用。我的进程从启动时开始,重复操作需要220毫秒。我只想做一次,让其他进程知道检查过程已经完成。只需写一个文件,例如在
/run
或/var/run
中,告诉他们检查已经完成。然后启动其他进程,让每个进程检查该文件,或者简单地说,通过给其他进程一个额外的程序参数来启动其他进程以避免检查。